#python #python-3.x
#python #python-3.x
Вопрос:
Я пытаюсь записать каждый элемент списка в другой файл.
Допустим, у нас есть список:
dataset = ['abc', 'def', 'ghi']
Я хочу перебирать список и создавать текстовые файлы в зависимости от длины списка. Итак, в этом случае должно быть 3 текстовых файла, и каждый будет иметь содержимое abc, def и ghi соответственно.
Мой текущий код приведен ниже:
# This will read a text file, normalize it and remove stopwords from it using nltk.
import nltk, io, math
from nltk.corpus import stopwords
# Read raw text
targetFile = open('text.txt')
rawtext = targetFile.read()
# Removing stopwords
stops = set(stopwords.words('english'))
filtered_text = [i for i in rawtext.lower().split() if i not in stops]
# Count Number of words
total_words = len(filtered_text)
# Divide them equally into 10 different lists
chunk_size = math.floor(total_words/10)
n_lists_of_words = [filtered_text[i:i chunk_size] for i in range(0, len(filtered_text), chunk_size)]
if(len(n_lists_of_words) > 10):
del n_lists_of_words[-1]
# Lets make list of strings instead of list of lists
list_of_str = [' '.join(x) for x in n_lists_of_words]
# Create 10 different files from above 10 elements of n_list_of_words list
for index, word in enumerate(n_lists_of_words):
with io.FileIO("output_text_" str(index) ".txt", "w") as file:
file.write(bytes(word), 'UTF-8')
Сообщение об ошибке:
Traceback (most recent call last):
File "clean_my_text.py", line 35, in <module>
file.write(bytes(word), 'UTF-8')
TypeError: 'str' object cannot be interpreted as an integer
Комментарии:
1. Вы получили какие-либо ошибки?
2.
with open("output_text_" str(count) ".txt", "wb") as outfile: outfile.write(dataset[count])
Не подходит для вашей цели?3. @RajatAgarwal Пожалуйста, скопируйте и вставьте сообщение об ошибке в свой пост. Скриншоты никогда не бывают такими удобными для чтения, как тексты.
4. Вы уверены
.write
, что принимаете два аргумента?5. Добавлена ошибка в виде текста.
Ответ №1:
Ваш код немного неправильный. вот исправлена последняя строка. файл.запись (байты (набор данных [количество], ‘UTF-8’))
Комментарии:
1. Это так не работает. Вам нужна строковая кодировка, но не такая. Вы можете использовать другой метод, как я сделал в своем ответе ниже
Ответ №2:
Спасибо всем. В состоянии это сделать. Вот решение ниже, не стесняйтесь задавать любую соответствующую информацию об этом:
# This will read a text file, normalize it and remove stopwords from it using nltk.
import nltk, io, math
from nltk.corpus import stopwords
from string import punctuation
# Read raw text
targetFile = open('input_text.txt')
rawtext = targetFile.read()
# Remove punctuation
def strip_punctuation(s):
return ''.join(c for c in s if c not in punctuation)
filtered_punc = strip_punctuation(rawtext)
print(filtered_punc)
# Removing stopwords
stops = set(stopwords.words('english'))
filtered_text = [i for i in filtered_punc.lower().split() if i not in stops]
# Count Number of words
total_words = len(filtered_text)
# Divide them equally into 10 different lists
chunk_size = math.floor(total_words/10)
n_lists_of_words = [filtered_text[i:i chunk_size] for i in range(0, len(filtered_text), chunk_size)]
if(len(n_lists_of_words) > 10):
del n_lists_of_words[-1]
# Lets make list of strings instead of list of lists
list_of_str = [' '.join(x) for x in n_lists_of_words]
# Print list values in seperate files
for index, word in enumerate(list_of_str):
with open("Output" str(index) ".txt", "w") as text_file:
print(word, file=text_file)