3

私はそのようにフォーマットされた多くの行を持つファイルを持っています:

DIV ID=0X78800009 EXT="LOS ANGELES" TY=STANDARD OWN=0X74400002 ABBR=LA

EXT値を引き出す必要がありますが、引用符で囲まれた部分のみです。私は現在これを使用しています:

for line in file:
    if sub in line:
        extlist.append([item[4:] for item in line.split() if item.startswith('EXT=')].pop())

ただし、IDlistにLOSANGELESの「LOS」部分を追加するだけです。私はPythonに少し慣れていませんが、必要な値を抽出するために文字列関数item[4:]をラップしstr(item[4:])て使用する方法はありますか?

注意として、EXTフィールドのテキストは長さが異なり、すべてランダムな都市名です。

4

2 に答える 2

4

正規表現

>>> import re
>>> myString = 'DIV ID=0X78800009 EXT="LOS ANGELES" TY=STANDARD OWN=0X74400002 ABBR=LA'
>>> re.search('EXT="(.+?)"',myString).group(1)
'LOS ANGELES'
于 2012-08-09T15:37:27.413 に答える
2

行に他の二重引用符がないことを確認できる場合は、次の単純なアプローチが機能します。

s='DIV ID=0X78800009 EXT="LOS ANGELES" TY=STANDARD OWN=0X74400002 ABBR=LA'

s.split('"')[1]
'LOS ANGELES'

上記の制約が当てはまらない場合、正規表現を使用すると、より柔軟で堅牢な方法でこれを見つけることができます。

それ以外の場合、これは「単純は複雑よりも優れている」という精神に基づいてこの問題を解決する 1 つの方法です。(Python の禅)。

于 2012-08-09T15:34:36.200 に答える