Как записать каждый элемент списка в отдельный текстовый файл?

#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)