Я не могу достаточно найти ответ на этот вопрос в другом месте, и поэтому я собираюсь идти вперед и разместить его здесь:Python: прочитать несколько текстовых файлов и запись соответствующих файлов CSV
У меня есть сценарий Python, который будет читать содержимое текстового файла, разбивать его содержимое на слова, а затем выводить CSV-файл, который уменьшил текст до списка частот слов. (В конце концов я вставлю строку, чтобы отбросить слова, но я так далеко не достиг.) Что бы я хотел сделать дальше с этим скриптом, это указать его в каталог текстовых файлов и перепрограммировать эти файлы, создав соответствующий CSV-файл для каждого TXT-файла.
Вот что я до сих пор:
#! /usr/bin/env python
import glob
import re
import csv
files = {}
for fpath in glob.glob("*.txt"):
with open(fpath) as f:
words = re.split('\s+', f.read().lower())
freq_dic = {}
punctuation = re.compile(r'[.?!,":;]')
for word in words:
word = punctuation.sub("", word)
try:
freq_dic[word] += 1
except:
freq_dic[word] = 1
word_list = [(val, key) for key, val in freq_dic.items()]
sorted(word_list, reverse=True)
with outputfile as myfileout:
writer = csv.writer(myfileout)
writer.writerows(sorted(word_list, reverse=True))
Вы можете сказать, я надеюсь, что я просто работает «вверх» из рабочего сценария, но я немного потерял. Я довольно горжусь циклом with
на выходе файла, но я попытался включить ввод в цикл with
.
Когда я запускаю этот скрипт в каталоге с 20 текстов в нем, я получаю следующее:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-63-c16fff380b6f> in <module>()
17 word_list = [(val, key) for key, val in freq_dic.items()]
18 sorted(word_list, reverse=True)
---> 19 with outputfile as myfileout:
20 writer = csv.writer(myfileout)
21 writer.writerows(sorted(word_list, reverse=True))
ValueError: I/O operation on closed file
Каков ваш вопрос в точности? Вы можете легко получить список текстовых файлов с помощью 'txt = [i for i в os.listdir ('.'), Если i.endswith ('. Txt')]', а затем применить частотную функцию слова к каждому файлу. Кроме того, вас может заинтересовать ['nltk'] (http://nltk.org/). Он имеет классы для работы с корпорациями (каталог текстовых файлов), легко разбивает файлы на слова и имеет 'FreqDist' для вычисления частот. – ChrisP
Отредактированное сообщение, чтобы включить отчет об ошибке - потому что вы не можете сделать это в комментарии. (И прочитайте это.) –