从包含多行的文件中提取值

时间:2015-03-04 13:14:19

标签: python

我正在尝试搜索包含行'<text> 291 km</text>'的字符串,只返回291的值。当我运行下面的代码时,我得到一个错误 -

print m.group(1) 
   AttributeError: 'NoneType' object has no attribute 'group'

Python初学者在这里!

   f = open("sample.txt","r+") 
   text = f.read()
   m = re.search('<text> (.+?)km</text>', text)
   print m.group(1)

2 个答案:

答案 0 :(得分:1)

我认为这可能是因为这些词之间存在空格。我建议你使用\s*来匹配零个或多个空格。

>>> s = 'foo <text> 291 km</text> bar'
>>> re.search(r'<text>\s*(\d+)\s*km\s*</text>', s).group(1)
'291'

答案 1 :(得分:1)

如果这是您文件中的实际单独行并且始终以<text>开头,则可以使用str.startswith和split:

with open("tsample.txt") as f:
    for line in f:
       if line.startswith( '<text>' ):
            print(line.split()[1])
291

无论哪种方式,您都应该使用with打开文件并逐行阅读。