2016-10-11 10 views
0

リストの各要素を別のファイルに書き込もうとしています。リストの各要素を別々のテキストファイルに書き込む方法は?

レッツは、私たちがリストを持っていると言う:

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

あなたはエラーが生じましたか? –

+0

screenshot –

+2

outfileとして:outfile.write(dataset [count]) 'あなたの目的に合っていないと'(output_text_ "+ str(count)+" .txt "、" wb " – roganjosh

答えて

0

ありがとうございました。それをすることができます。以下の解決方法をご覧ください。

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

あなたのコードは少し間違っています。 ここが最終行です。 file.write(bytes(データセット[count]、 'UTF-8'))

+0

このようには機能しません。あなたは文字列エンコーディングが必要ですが、このようにはなりません。あなたは私の答えでやったように、別の方法を使うことができます –

関連する問題