【发布时间】:2010-09-14 09:21:29
【问题描述】:
对不起,初学者的python问题,但我找不到任何地方如何做到这一点,所以请耐心等待。
我正在尝试从包含关键字后跟一个值的文件中提取值: 示例:
length 95 width 332 length 1253 length 345 width 22
例如,我如何提取与关键字“长度”相关的所有值?
【问题讨论】:
对不起,初学者的python问题,但我找不到任何地方如何做到这一点,所以请耐心等待。
我正在尝试从包含关键字后跟一个值的文件中提取值: 示例:
length 95 width 332 length 1253 length 345 width 22
例如,我如何提取与关键字“长度”相关的所有值?
【问题讨论】:
>>> s = 'length 95 width 332 length 1253 length 345 width 22'
>>> import re
>>> re.findall(r'length (\w+)', s)
['95', '1253', '345']
这也可以,但它有额外的限制:
>>> sp = s.split()
>>> [sp[i+1] for i, l in enumerate(sp) if l == 'length']
['95', '1253', '345']
【讨论】:
“re”模块应该为您做。否则,如果您知道(可能很短)输入中的(可能很少)关键字,请采取粗略的方式并进行一些字符串切片。
【讨论】:
以下代码可能会对您有所帮助。我没有测试过,所以你可能需要做一些调整,但它应该给你基本的想法
import re
f = open('filename', 'r')
for line in f.readlines():
for m in re.finditer('length\s+(?P<number>\d+)', line):
print m.group('number')
【讨论】:
您将不得不拆分内容,例如像这样(如果您正在阅读整个文件):
with open("filename", "rb") as f:
l = f.read().split()
valuesForLengthKeyword = tuple(int(l[i+1])
for i in xrange(0, len(l), 2)
if l[i] == "length")
print valuesForLengthKeyword
这将打印一个像 (95, 1253, 345) 这样的元组。
【讨论】: