найти конкретный словарь и извлечь строку из CSV и преобразовать в новый файл CSV - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть 30,000 список строк csv files, и я хочу выполнить поиск по этим строкам и столбцам после нахождения определенных слов, записав эту строку в новых CSV-файлах.

например:

job ,position , email , adress 

joe  ,validi ,  ceo  ,  joevalidi@yahoo.com

Я хочу знать, кто такие ceo, затем распакуйте его и сохраните в различных csv файлах.

Ответы [ 2 ]

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

скажите, что это ваш входной файл test.txt, расположенный по адресу /Users/redwing/temp/

/Users/cat/meow/meoew
/Users/cat/meow/meoew2
/Users/dog/bow/wow

тогда этот скрипт выведет файл, содержащий только строки, содержащие cat.

in_fname = '/Users/redwing/temp/test.txt'
out_fname = '/Users/redwing/temp/test_output.txt'

f_out = open(out_fname, 'w+')
f_in = open(in_fname, 'r')
for content in f_in:
    if 'cat' in content:
        f_out.write(content)
f_in.close()
f_out.close()

Хорошая особенность этого решения в том, что весь файл никогда не читается в память, поэтому не имеет значения, отфильтрованы ли вы 3000 или 30 миллионов строк.

PS. Отправил мой ответ перед вашим редактированием. Очевидно, вам нужно просто заменить cat на ceo)

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

Вы можете попробовать это: использовать re модуль

import re

pattern = re.compile(r'ceo')
ceo_list = []

with open('managers.csv', 'r') as f:  ## where managers.csv is the file you shared above
    for i in f:
        if pattern.search(i):
            ceo_list.append(i.split(',')[0].strip())

Теперь у вас есть все ceo в списке ceo_list. Просто запишите его в отдельный файл:

with open('ceo.csv', 'w') as f:
    for item in ceo_list:
        f.write("%s\n" % item)

Дайте мне знать, если это поможет.

...