2010-09-14 86 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)

相關問題