返回列表 发帖

[问题求助] 如何把曲目表提取出来

本帖最后由 netdzb 于 2020-4-4 08:44 编辑

PERFORMER "Various"
TITLE "宝丽金非常老牌精选"
FILE "CDImage.ape" WAVE
  TRACK 01 AUDIO
    TITLE "太阳一样"
    PERFORMER "刘文正"
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    TITLE "堆积情感"
    PERFORMER "邝美云"
    INDEX 00 03:28:07
    INDEX 01 03:30:10
  TRACK 03 AUDIO
    TITLE "时空寄情"
    PERFORMER "黄莺莺"
    INDEX 00 08:24:00
    INDEX 01 08:27:12
  TRACK 04 AUDIO
    TITLE "再见我的爱人"
    PERFORMER "邓丽君"
    INDEX 00 12:33:10
    INDEX 01 12:36:32
  TRACK 05 AUDIO
    TITLE "海角天涯"
    PERFORMER "王芷蕾"
    INDEX 00 16:03:02
    INDEX 01 16:06:07
  TRACK 06 AUDIO
    TITLE "廻"
    PERFORMER "李恕权"
    INDEX 00 19:30:30
    INDEX 01 19:33:22
  TRACK 07 AUDIO
    TITLE "故事的真相"
    PERFORMER "黄仲昆、杨林"
    INDEX 00 24:04:05
    INDEX 01 24:06:12
  TRACK 08 AUDIO
    TITLE "扬帆"
    PERFORMER "阳帆"
    INDEX 00 28:34:42
    INDEX 01 28:37:22
======

def main():
    with open('d:/test_trim.txt', 'w', encoding='UTF-8') as fout:
        can_write = False
        with open('d:/test.txt', 'r', encoding='UTF-8') as fin:
            line=fin.readline()
            while(line != ''):
                if line.find('TRACK') == -1:
                    line = fin.readline()
                    continue
                if line.find('TITLE') > -1:
                    print line
                    fout.write(line)
                line = fin.readline()
    print('Done.')

运行结果
应该是
TITLE "歌曲名",我关键的一个地方不会写。
就是输出的时候,怎么把TITLE和引号,
多余的tab去掉?

本帖最后由 wujunkai 于 2020-4-4 10:23 编辑

回复 1# netdzb
r'(?<=TITLE ").+?(?=")'COPY
或者
print line.lstrip()COPY
Ps:为了代码兼容性,建议使用print();

TOP

我改成这样可以吗?
r'(?<=TITLE.*").+?(?=")'
因为我并不清楚title后面有几个空格,
或者是tab?

TOP

回复 3# netdzb


    原则上是可以,但python不允许

TOP

使用 raku.org(之前叫 Perl 6):
.comb(/TITLE \s* \" <( \w+ )>\"/)[0].say if /TITLE/ for $=finish.lines
=finish
PERFORMER "Various"
TITLE "宝丽金非常老牌精选"
FILE "CDImage.ape" WAVE
  TRACK 01 AUDIO
    TITLE "太阳一样"
    PERFORMER "刘文正"
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    TITLE "堆积情感"
    PERFORMER "邝美云"
    INDEX 00 03:28:07
    INDEX 01 03:30:10
  TRACK 03 AUDIO
    TITLE "时空寄情"
    PERFORMER "黄莺莺"
    INDEX 00 08:24:00
    INDEX 01 08:27:12
  TRACK 04 AUDIO
    TITLE "再见我的爱人"
    PERFORMER "邓丽君"
    INDEX 00 12:33:10
    INDEX 01 12:36:32
  TRACK 05 AUDIO
    TITLE "海角天涯"
    PERFORMER "王芷蕾"
    INDEX 00 16:03:02
    INDEX 01 16:06:07
  TRACK 06 AUDIO
    TITLE "廻"
    PERFORMER "李恕权"
    INDEX 00 19:30:30
    INDEX 01 19:33:22
  TRACK 07 AUDIO
    TITLE "故事的真相"
    PERFORMER "黄仲昆、杨林"
    INDEX 00 24:04:05
    INDEX 01 24:06:12
  TRACK 08 AUDIO
    TITLE "扬帆"
    PERFORMER "阳帆"
    INDEX 00 28:34:42
    INDEX 01 28:37:22COPY
输出:
宝丽金非常老牌精选
太阳一样
堆积情感
时空寄情
再见我的爱人
海角天涯
故事的真相
扬帆COPY

TOP

回复 5# sxw


这个用perl 5怎么写,手上没有perl6

TOP

返回列表