从python中的一行中拉出一个特定的子串

时间:2012-08-09 15:31:39

标签: python string python-2.7 substring list-comprehension

我有一个文件,其中有许多行格式如下:

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字段中的文本长度不同,它们都是随机城市名称。

2 个答案:

答案 0 :(得分:4)

Regular Expressions

>>> 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的禅宗)。