Очистка текста для нескольких файлов в Python - PullRequest
0 голосов
/ 19 мая 2018

Я работаю над сценарием для очистки файла .txt, создания списка, подсчета частот уникальных слов и вывода файла .csv с частотами.Я хотел бы открыть несколько файлов и объединить их, чтобы по-прежнему выводить один файл .csv.

Будет ли эффективнее написать код, который сначала объединит текст между файлами .txt, или прочитать / очистить все уникальные файлы, а затем объединить списки / словари?Как будет выглядеть синтаксис для оптимального сценария?

Я пытался исследовать его самостоятельно, но у меня очень ограниченные навыки кодирования, и я не могу найти ответ, который соответствует моему конкретному вопросу.Я ценю любой вклад.Спасибо!

import re

filename = 'testtext.txt'
file = open(filename, 'rt')
text = file.read()
file.close()

import re
words = re.split(r'\W+', text)

words = [word.lower() for word in words]

import string
table = str.maketrans('', '', string.punctuation)
stripped = [w.translate(table) for w in words]

from collections import Counter

countlist = Counter(stripped)

import csv

w = csv.writer(open("testtext.csv", "w"))
for key, val in countlist.items():
    w.writerow([key, val])

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Если вы хотите посчитать частоты слов для нескольких файлов и вывести их в один файл CSV, вам не нужно много делать с вашим кодом, просто добавьте цикл в ваш код, например:

import re
import string
from collections import Counter
import csv

files = ['testtext.txt', 'testtext2.txt', 'testtext3']
stripped = []

for filename in files:
    file = open(filename, 'rt')
    text = file.read()
    file.close()

    words = re.split(r'\W+', text)

    words = [word.lower() for word in words]

    table = str.maketrans('', '', string.punctuation)
    stripped += [w.translate(table) for w in words]  # concatenating parsed data

countlist = Counter(stripped)

w = csv.writer(open("testtext.csv", "w"))
for key, val in countlist.items():
    w.writerow([key, val])

Я не знаю, является ли это наиболее оптимальным способом сделать это.
Это будет зависеть от таких факторов, как: насколько большие файлы?и сколько файлов вы хотите проанализировать?и как часто вы хотите анализировать x файлы размером y?и т. д.
Когда вы поняли это, вы можете начать думать о путях оптимизации процесса.

0 голосов
/ 19 мая 2018

если вам нужно вычислить частоту, лучше сначала объединить строки из нескольких файлов .txt, чтобы узнать производительность, вы можете написать функцию datetime в начале и в конце обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...