如何正确使用for-loop与python的正则表达式库?

时间:2015-07-30 20:56:03

标签: python regex

我正在尝试实现一个程序,该程序将获取一个文件,找到与该文档关联的所有正则表达式匹配,并将我想要的特定匹配连接到一个字符串中,该字符串写入文件。

import re
import sys

f = open ('input/' + sys.argv[1], "r")
fd = f.read()
s = ''

pattern = re.compile(r'(?:(&#\d*|>))(.*?)(?=(&#\d*|<))')

for e in re.findall(pattern, fd, re.S)
        s += e[1]

f.close()
o = open ( 'output' + sys.argv[1], 'w', 0)
o.write(s)
o.close()

但是,当我尝试运行它时,我收到以下错误:

 File "./regex.py", line 8
    for e in re.findall(pattern, fd, re.S)

如果

2 个答案:

答案 0 :(得分:1)

你在那条线的末尾忘了一个冒号。

for e in re.findall(pattern, fd, re.S):

您似乎已经删除了错误的类型(SyntaxError,我想),但这些信息非常有用。看到SyntaxError而不是其他类型会让您知道您的错误与正则表达式无关。

答案 1 :(得分:0)

与原始问题没有直接关系(它确实是一个缺少的冒号),但我建议采用不同的方法来进行字符串连接。每次重复附加新块将创建一个新字符串(因为字符串是不可变的)。更好的方法是创建一个累加器列表,将每个匹配的字符串附加到它,然后使用''.join(my_list_with_matches)将这些字符串连接成一个。