Python читает .txt и разделяет слова после символа @ - PullRequest
0 голосов
/ 05 октября 2018

У меня большой 11 ГБ .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

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Ваш файл довольно большой (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')
0 голосов
/ 05 октября 2018

Если ваш файл выглядит следующим образом:

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')

Out:

['user', 'user2', 'Useruser']
...