整体阅读文本文件

时间:2014-04-17 11:52:07

标签: python regex python-2.7

我需要你的帮助。我想阅读一个文本文件"作为一个整体"而不是一行一行。这是因为通过逐行完成我的正则表达式不能很好地工作,它需要整个文本。到目前为止,这就是我正在做的事情:

with open(r"AllText.txt") as fp:
    for line in fp:
        for i in re.finditer(regexp_v3, line):
            print i.group()

我需要打开我的文件,全部阅读,搜索我的正则表达式并打印我的结果。我怎么能做到这一点?

3 个答案:

答案 0 :(得分:5)

要获取文件的所有内容,只需使用file.read()

all_text = fp.read()  # Within your with statement.

all_text现在是包含文件中数据的单个字符串。


请注意,此包含换行符,但如果您使用正则表达式提取内容,则它们不应该成为问题。

答案 1 :(得分:3)

使用read

with open("AllText.txt") as fp:
    whole_file_text = fp.read()

但请注意,您的测试将包含\n,其中新行常用于您的文字中。

例如,如果这是您的文本文件:

#AllText.txt
Hello
How
Are
You

您的whole_file_text字符串如下:

>>> whole_file_text
'Hello\nHow\nAre\nYou'

您可以执行以下任一操作:

>>> whole_file_text.replace('\n', ' ')
'Hello How Are You'

>>> whole_file_text.replace('\n', '')
'HelloHowAreYou'

答案 2 :(得分:3)

如果您不想将整个文件读入memery,可以使用mmap

  

内存映射文件对象的行为类似于字符串和文件对象。

import re, mmap

with open(r'AllText.txt', 'r+') as f:
    data = mmap.mmap(f.fileno(), 0)
    mo = re.finditer(regexp_v3, data)