1

我正在尝试使用 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
4

2 回答 2

2

match.group(n)返回正则表达式组n(如果 n=0,则返回整个匹配项)。正则表达式中的组是 parentesis 内部的东西,你会得到例外,因为你的表达式中没有任何组。向我们展示您尝试匹配的数据,我们将帮助您更好地表达。

于 2013-10-21T05:19:39.857 回答
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 开发人员易于阅读您的代码是一个好主意。

于 2013-10-21T05:33:43.607 回答