0

我有一系列日志文件,其中包含在音乐系统上播放的音乐以及播放时间。这些日志文件上的轨道具有唯一的 ID 号,例如 AB008946。如何从日志文件中删除这些 ID 号并在 python 程序中保留其他所有内容?

文件中的条目示例

08:04:10 Current Track Playing = AB034214 Skinny Genes - Eliza Doolittle 

该文件只是一个 .txt 文件,其中包含这些时间和曲目的列表

之前可能应该提到过这一点,但我正在编写的程序是在一个用 tkinter 编写的 GUI 中,目前我正在将原始日志文件过滤到列表中

[line for line in open(fl) if "Current Track Playing" in line]
log = open('log','w').writelines([ line for line in open(fl) if "Current Track Playing" in line])

其中 fl 是原始日志文件

抱歉我之前没有提到这个

4

2 回答 2

2

好吧,如果它们都具有这种格式,那么您甚至不需要执行正则表达式路由。

>>> s = '08:04:10 Current Track Playing = AB034214 Skinny Genes - Eliza Doolittle'
>>> s_clean = s[:33] + s[42:]
>>> s_clean
'08:04:10 Current Track Playing = Skinny Genes - Eliza Doolittle'

对于您的代码示例:

open('log','w').writelines([
    (line[:33]+line[42:])
    for line in open(fl) if "Current Track Playing" in line])

可能需要做一些换行符,不确定。

于 2013-08-07T13:22:07.917 回答
2

这会更容易sed

$ cat file
08:04:10 Current Track Playing = AB034214 Skinny Genes - Eliza Doolittle
$ sed -i 's/AB[0-9]*//g' file
$ cat file
08:04:10 Current Track Playing =  Skinny Genes - Eliza Doolittle

s/something/otherthing/g查找并用文档周围的所有内容something替换它( )。在这种情况下,它会查找每一部分并通过替换为空字符串来删除它们。otherthinggAB<numbers>

更新

为了更确定不删除字符串的不正确部分,还可以使用以下方法:

sed 's/= AB[0-9]*/=/g' file

感谢曼努埃尔·古铁雷斯!)。

于 2013-08-07T13:22:19.790 回答