我有一个文件,其中有许多行格式如下:
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())
但它只将LOS ANGELES的“LOS”部分附加到idlist。我对python有点新手,但有没有办法在item[4:]
中包装str(item[4:])
并使用string functions来提取我需要的值?
作为注释,EXT字段中的文本长度不同,它们都是随机城市名称。
答案 0 :(得分:4)
>>> import re
>>> myString = 'DIV ID=0X78800009 EXT="LOS ANGELES" TY=STANDARD OWN=0X74400002 ABBR=LA'
>>> re.search('EXT="(.+?)"',myString).group(1)
'LOS ANGELES'
答案 1 :(得分:2)
如果你肯定你的行中没有其他双引号,那么这个简单的方法就可以了:
s='DIV ID=0X78800009 EXT="LOS ANGELES" TY=STANDARD OWN=0X74400002 ABBR=LA'
s.split('"')[1]
'LOS ANGELES'
请注意,如果上述约束不成立,使用 regular expression 是一种更灵活/更健壮的方法来查找它。
否则,这是以“简单比复杂更好”的精神解决这个问题的一种方法。(Python的禅宗)。