2010-09-14 85 views
1

对不起,对于初学者python问题,但我无法找到任何地方如何做到这一点,请耐心等待。找到与python文件中的关键字相关联的值

我试图提取含有关键字后面的值文件中的值: 例子:

length 95 width 332 length 1253 length 345 width 22 

如何提取与关键字“长度”,例如相关联的所有值?

回答

1
>>> 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'] 
+0

什么是“((W +)”在第一个代码片段? – Theodor 2010-09-14 10:47:30

+0

@Theo:收集所有连续的单词字符。 – SilentGhost 2010-09-14 10:49:55

1

以下代码可能对您有所帮助。我没有测试过,所以你可能需要做一些调整,但它应该给你的基本思路

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') 
+0

这不是Python。 – SilentGhost 2010-09-14 09:37:17

+0

是的,是的...对于错字...对一些检查后,上面的脚本现在正在工作 – PierrOz 2010-09-14 09:48:23

1

“重”模块应该为你做。否则,如果您知道(可能很短的)输入中的(可能很少的)关键字,那就用粗糙的方法做一些字符串切片。

0

你将不得不分割的内容,例如像这样(如果你正在阅读的整个文件反正):

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)

相关问题