0

音楽システムで再生された音楽とその時刻を含む一連のログ ファイルがあります。これらのログ ファイルのトラックには、AB008946 などの一意の ID 番号があります。これらの 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て置換しotherthingます ( g)。この場合、 のすべての部分を検索AB<numbers>し、空の文字列に置き換えることでそれらを削除します。

アップデート

文字列の不適切な部分を削除しないようにするために、次のように使用することもできます。

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

マヌエル・グティエレスに感謝します!)。

于 2013-08-07T13:22:19.790 に答える