为什么python 3给我“预期的字符串或缓冲区”

时间:2017-04-16 02:28:23

标签: python regex

试用RegexMagic,我想用null替换文件中的一堆字符(即删除它们)。我在一个文件中读取了一个字符串。然后我应用了RegexMagic生成的regex表达式的略微修改版本,但我得到了“期望的字符串或缓冲区”。这是一个字符串,因为我可以将其打印为字符串,并且“在”中使用它。

f = open('y:\\prepped.txt')
s = f.read().replace('\x1A','').encode('ascii', 'xmlcharrefreplace').decode('ascii')
s = re.sub(r"(?:®NT|¯+ _®MD\+SD|®MD-SD¯)","",re.DOTALL)
print(s)

它不打印,我收到错误消息。这是Python 3.3。

1 个答案:

答案 0 :(得分:1)

这是因为你没有指定要修改的字符串。如果您想将模式"(?:®NT|¯+ _®MD\+SD|®MD-SD¯)"替换为字符串""中的替换s,并指定re.DOTALL标记,则可以执行以下操作:

s = re.sub(r"(?:®NT|¯+ _®MD\+SD|®MD-SD¯)", "", s, flags=re.DOTALL)

使用re.sub的语法是re.sub(pattern, repl, string, count=0, flags=0)有关详细信息,请参阅此处的文档: https://docs.python.org/2/library/re.html