我正在尝试实现一个程序,该程序将获取一个文件,找到与该文档关联的所有正则表达式匹配,并将我想要的特定匹配连接到一个字符串中,该字符串写入文件。
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)
如果
答案 0 :(得分:1)
你在那条线的末尾忘了一个冒号。
for e in re.findall(pattern, fd, re.S):
您似乎已经删除了错误的类型(SyntaxError
,我想),但这些信息非常有用。看到SyntaxError
而不是其他类型会让您知道您的错误与正则表达式无关。
答案 1 :(得分:0)
与原始问题没有直接关系(它确实是一个缺少的冒号),但我建议采用不同的方法来进行字符串连接。每次重复附加新块将创建一个新字符串(因为字符串是不可变的)。更好的方法是创建一个累加器列表,将每个匹配的字符串附加到它,然后使用''.join(my_list_with_matches)
将这些字符串连接成一个。