无法在while循环中输出re.search和re.match

时间:2013-10-21 05:15:24

标签: python regex search match regex-group

我正在尝试打印并最终使用python将信息和数据写入文件。我在一个文件中读到一个名为List[]的数组,然后用正则表达式搜索每一行。我想为文件中的每一行执行此操作,但是当我这样做时

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

2 个答案:

答案 0 :(得分:2)

match.group(n)返回正则表达式组n(如果n = 0,则返回整个匹配项)。正则表达式中的一个组是parentesis中的一个组件,因为你的表达式中没有任何组,所以你得到了异常。向我们展示您想要匹配的数据,我们将帮助您更好地表达。

答案 1 :(得分: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开发人员提供易于阅读的代码是一个好主意。