我需要你的帮助。我想阅读一个文本文件"作为一个整体"而不是一行一行。这是因为通过逐行完成我的正则表达式不能很好地工作,它需要整个文本。到目前为止,这就是我正在做的事情:
with open(r"AllText.txt") as fp:
for line in fp:
for i in re.finditer(regexp_v3, line):
print i.group()
我需要打开我的文件,全部阅读,搜索我的正则表达式并打印我的结果。我怎么能做到这一点?
答案 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)