Привет, пытаясь извлечь имена + электронную почту из текстового файла и не знаю, как поместить вывод рядом друг с другом - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь вывести свои данные рядом, имя и адрес электронной почты. Прямо сейчас он просто печатает электронные письма, а затем имена.

Вот мой код:

import re
import nltk
from nltk.corpus import stopwords
stop = stopwords.words('english')

inputfile = open('/Users/jchome/Downloads/StockXRF/untitled.txt','r')
string = inputfile.read()



def extract_email_addresses(string):
    r = re.compile(r'[\w\.-]+@[\w\.-]+')
    return r.findall(string)

def ie_preprocess(document):
    document = ' '.join([i for i in document.split() if i not in stop])
    sentences = nltk.sent_tokenize(document)
    sentences = [nltk.word_tokenize(sent) for sent in sentences]
    sentences = [nltk.pos_tag(sent) for sent in sentences]
    return sentences

def extract_names(document):
    names = []
    sentences = ie_preprocess(document)
    for tagged_sentence in sentences:
        for chunk in nltk.ne_chunk(tagged_sentence):
            if type(chunk) == nltk.tree.Tree:
                if chunk.label() == 'PERSON':
                    names.append(' '.join([c[0] for c in chunk]))
    return names

if __name__ == '__main__':
    emails = extract_email_addresses(string)
    names = extract_names(string)


print (emails + names)

вывод:

['1lawrencenage1l@gmail.com', george@gmail.com, 'Lawrence', 'George']

Как разместить вывод рядом друг с другом и записать в текстовый файл?

1 Ответ

0 голосов
/ 17 октября 2019

Вы можете сделать что-то вроде:

import pandas as pd
zipped = list(zip(emails, names))
df = pd.DataFrame(zipped, columns = ['emails' , 'names'])

После этого вы сможете распечатать фрейм данных и использовать, например, метод to_csv для сохранения вывода в файл.

...