对不起,对于初学者python问题,但我无法找到任何地方如何做到这一点,请耐心等待。找到与python文件中的关键字相关联的值
我试图提取含有关键字后面的值文件中的值: 例子:
length 95 width 332 length 1253 length 345 width 22
如何提取与关键字“长度”,例如相关联的所有值?
对不起,对于初学者python问题,但我无法找到任何地方如何做到这一点,请耐心等待。找到与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']
以下代码可能对您有所帮助。我没有测试过,所以你可能需要做一些调整,但它应该给你的基本思路
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')
这不是Python。 – SilentGhost 2010-09-14 09:37:17
是的,是的...对于错字...对一些检查后,上面的脚本现在正在工作 – PierrOz 2010-09-14 09:48:23
“重”模块应该为你做。否则,如果您知道(可能很短的)输入中的(可能很少的)关键字,那就用粗糙的方法做一些字符串切片。
你将不得不分割的内容,例如像这样(如果你正在阅读的整个文件反正):
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)
。
什么是“((W +)”在第一个代码片段? – Theodor 2010-09-14 10:47:30
@Theo:收集所有连续的单词字符。 – SilentGhost 2010-09-14 10:49:55