我有一个11 GB的大.txt文件,其中包含电子邮件地址。我只想保存直到@符号之间的字符串。我的输出仅生成第一行。我使用了先前项目的代码。我想将输出保存在其他.txt文件中。我希望有人能帮助我。
我的代码:
import re
def get_html_string(file,start_string,end_string):
answer="nothing"
with open(file, 'rb') as open_file:
for line in open_file:
line = line.rstrip()
if re.search(start_string, line) :
answer=line
break
start=answer.find(start_string)+len(start_string)
end=answer.find(end_string)
#print(start,end,answer)
return answer[start:end]
beginstr=''
end='@'
file='test.txt'
readstring=str(get_html_string(file,beginstr,end))
print readstring
答案 0 :(得分:1)
如果您的文件如下例所示:
user@google.com
user2@jshds.com
Useruser@jsnl.com
您可以使用此:
def get_email_name(file_name):
with open(file_name) as file:
lines = file.readlines()
result = list()
for line in lines:
result.append(line.split('@')[0])
return result
get_email_name('emails.txt')
出局:
['user', 'user2', 'Useruser']
答案 1 :(得分:1)
您的文件很大(11G),因此您不应该将所有这些字符串都保留在内存中。而是逐行处理文件并在读取下一行之前写入结果。
这应该很有效:
with open('test.txt', 'r') as input_file:
with open('result.txt', 'w') as output_file:
for line in input_file:
prefix = line.split('@')[0]
output_file.write(prefix + '\n')