對不起,對於初學者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