2013-10-21 27 views
1

我試圖打印並最終使用python將信息和數據寫入文件。我在一個文件中讀入一個名爲List[]的數組,然後用正則表達式搜索每一行。我想在一個文件中的每一行做到這一點,但是當我這樣做無法在while循環中輸出re.search和re.match

counter=0 
while counter <= OrderNum:  
    Info=re.match('^.{0,12}',List[counter]) 
    Data=re.search('=....................',List[counter]) 
    print counter 
    print 'is less than' 
    print OrderNum 
    print Info.group(counter) 
    print Data.group(counter) 
    counter+=1 

一切都很好,對於第一次迭代[0]但一旦

Output 
1 
is less than 
4 

我收到以下錯誤

Traceback (most recent call last): 
File "C:\Users\*******\workspace\Jython\regularexpressions.py", line 35, in <module> 
print Info.group(counter) 
IndexError: no such group 
+0

嘗試Info.group(0)/ Data.group(0)而不是.group(counter) – Gryphius

回答

2

match.group(n)返回正則表達式組n(或者如果n = 0,整個匹配)。正則表達式中的一個組是parentesis內的一些東西,因爲表達式中沒有任何組,所以你會得到例外。向我們展示您正在嘗試匹配的數據,我們將以更好的表達方式爲您提供幫助。

1

re.matchre.search返回Match對象。如果您沒有將參數傳遞給.group方法,則會得到整個比賽。

如果您嘗試從另一個列表創建一些列表,您應該這樣做。

info_list = [] 
data_list = [] 

for counter, item in enumerate(the_list):  
    info=re.match('^.{0,12}', item) 
    data=re.search('=....................', item) 
    info_list.append(info.group()) 
    data_list.append(data.group()) 

我已經改變了你的一些變量名是與PEP8更柔順。讓您的代碼易於其他Python開發人員閱讀是一個好主意。