TypeError:预期的字符串或缓冲区 Python
我一直在尝试解析文本文件并使用正则表达式对其进行操作。这是我的脚本:
import re
original_file = open('jokes.txt', 'r+')
original_file.read()
original_file = re.sub("\d+\. ", "", original_file)
如何修复以下错误:
Traceback (most recent call last):
File "filedisplay.py", line 4, in <module>
original_file = re.sub("\d+\. ", "", original_file)
File "C:\Python32\lib\re.py", line 167, in sub
return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or buffer
为什么我会收到此错误?
-
original_file
是文件对象,您需要读取它才能获取其内容或正则表达式所需的缓冲区。通常,使用它也是很好的
with
(只是这样,您不必记住关闭文件),因此您可能会得到如下所示的结果:import re with open('jokes.txt', 'r+') as original_file: contents = original_file.read() new_contents = re.sub(r"\d+\. ", "", contents)
您将看到我在代码中将regex字符串提取了出来(我
r
在regex字符串之前使用了一个)。这也是一个好习惯,因为有时您将不得不对某些字符加倍转义,以使其按预期的方式正常工作。