TypeError:预期的字符串或缓冲区 Python

发布于 2021-01-29 17:10:16

我一直在尝试解析文本文件并使用正则表达式对其进行操作。这是我的脚本:

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

为什么我会收到此错误?

关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    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字符串之前使用了一个)。这也是一个好习惯,因为有时您将不得不对某些字符加倍转义,以使其按预期的方式正常工作。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看