如何将正则表达式应用于文件内容?

2 投票
5 回答
3558 浏览
提问于 2025-04-16 11:24

我想对一个文件的内容使用正则表达式,但不想把整个文件的内容都加载到一个字符串里。RegexObject的第一个参数需要一个字符串或者一个缓冲区。有没有办法把文件变成一个缓冲区呢?

5 个回答

1

一次读取文件的一行,然后把你的正则表达式应用到这一行上。re模块似乎是专门用来处理字符串的。你可以在这个链接里找到更详细的信息:http://docs.python.org/library/re.html,不过我没有找到关于缓冲区的内容。

4

当然可以!试试这个mmap

你可以用re模块在一个内存映射的文件中进行搜索。

2

来自Python文档的引用:

缓冲区对象在Python语法中并没有直接支持,但可以通过调用内置函数 buffer() 来创建。

还有一些有趣的内容:

buffer(object[, offset[, size]])

这里的 object 参数必须是一个支持缓冲区调用接口的对象(比如字符串、数组和缓冲区)。[...]

文件对象并不实现缓冲区接口,所以你需要把它的内容转换成字符串(使用 f.read())或者转换成数组(可以使用 mmap 来实现)。

撰写回答