2017-02-10 7 views
0

Я написал следующий код:Как читать множественным NLTK Corpus файлы и записи в одном текстовом файле в Python

import nltk 

затем

file1 = nltk.corpus.gutenberg.words('shakespeare-caesar.txt') 
file2 = nltk.corpus.gutenberg.words('shakespeare-hamlet.txt') 
file3 = nltk.corpus.gutenberg.words('shakespeare-macbeth.txt') 

ту часть, где я пытаюсь записать содержимое в одном файле

filenames = [file1, file2, file3] 
with open('result.txt', 'w') as outfile: #want to store the contents of 3 files in result.txt 
    for fname in filenames: 
     with open(fname) as infile: 
      for line in infile: 
       outfile.write(line) 

, для которого я получаю следующую ошибку

TypeError         Traceback (most recent call last) 
<ipython-input-9-917545c3c1ce> in <module>() 
     2 with open('result.txt', 'w') as outfile: 
     3  for fname in filenames: 
----> 4   with open(fname) as infile: 
     5    for line in infile: 
     6     outfile.write(line) 

TypeError: invalid file: ['[', 'The', 'Tragedie', 'of', 'Julius', 'Caesar', ...] 

ответ

1

Как показывает последняя строка в сообщении об ошибке, file1 et al. это не имена файлов, а списки слов. Вместо того, чтобы использовать функцию слова, вы можете просто объединить файлы в один, как это:

filenames = [ 
    "shakespeare-caesar.txt", 
    "shakespeare-hamlet.txt", 
    "shakespeare-macbeth.txt" 
] 
with open("result.txt", "w") as f: 
    for filename in filenames: 
     f.write(nltk.corpus.gutenberg.raw(filename)) 
+0

Спасибо он работал –

+0

любая идея, почему она не работает на следующий фрагмент кода: _FILES = [ "светлячок .txt " "grail.txt", "overheard.txt", "pirates.txt", "singles.txt", "wine.txt"] с открытым ("merge.txt"," w ") как f: для файла в файлах: f.write (nltk.corpus.webtext.raw (файл)) _ Я получаю следующую ошибку: 7 с открытым ("merge.txt", "ш"), как F: 8 для файла в файлах: ----> 9 f.write (nltk.corpus.webtext.raw (файл)) UnicodeEncodeError : кодек 'charmap' не может кодировать символ '\ x99' в позиции 95156: символы отображаются в

+0

@Mitesh, вы уверены, что используете Python 3? – alexis

 Смежные вопросы

  • Нет связанных вопросов^_^