Как я могу напечатать один список из файла .txt в Python? - PullRequest
0 голосов
/ 22 октября 2018

У меня большой текстовый файл, который я хотел бы превратить в список слов.Мне удалось получить список для каждой строки в файле, но я хочу один список.

Вот что у меня есть.

import unicodedata
import codecs

infile = codecs.open('FILE.txt', 'r', encoding ='ascii', errors = 'ignore')
outfile = codecs.open('FILE2.txt', 'w', encoding ='ascii', errors = 'ignore')

for word in infile:
    mylist = str(word.split())

    outfile.write(mylist)
infile.close()
outfile.close()

Это дает мне файл, который выглядит следующим образом:

[word, word][word, word, word, word][word, word]...[word,word]

Я надеюсь получить файл, который выглядит так:

[word, word, word, .... word, word, word]

Я знаю, какобъединить несколько списков, но эти списки немедленно записываются в мой файл.Как написано, мой код не позволил бы мне объединить списки после факта.

ОБНОВЛЕНИЕ:

Спасибо за вашу помощь.Я решил проблему со следующим:

import unicodedata
import codecs

infile = codecs.open('FILE1.txt', 'r', encoding ='ascii', errors = 'ignore')
outfile = codecs.open('FILE2.txt', 'w', encoding ='ascii', errors = 'ignore')

mylist =[]
for line in infile:
    for word in line.split():
        mylist.append(word)



outfile.write(str(mylist))
infile.close()
outfile.close()

Ответы [ 4 ]

0 голосов
/ 22 октября 2018

Просто выровняйте свой список перед тем, как его написать, есть ли какое-то условие против этого?

for word in infile:
    mylist = str(word.split())
    mylist = [j for i in mylist for j in i]
    outfile.write(mylist)
0 голосов
/ 22 октября 2018

Например, чтобы получить все уникальные слова из вашего файла, без порядка:

# create demo file
with open("FILE.txt", "w", encoding ='ascii',) as f:
    f.write("Some data with newlines\n And duplicate data words with no sense\n" +
            "in it also newlines and \nmore stuff\nto parse and with Some data in it\n" + 
            "Done.")

# read demo file and write other file
with open ('FILE.txt', 'r', encoding ='ascii', errors = 'ignore') as infile,\
     open ('FILE2.txt', 'w', encoding ='ascii', errors = 'ignore') as outfile:

    data = set( ( w for line in infile for w in line.split()) )

    # write single words from set
    for word in data:
        outfile.write(word+"\n")

    # write set as list-repr()    
    outfile.write("\n"+str(list(data)))

with open("FILE2.txt") as f:
    print(f.read())

Вывод:

sense
it
stuff
words
in
data
Some
And
no
also
to
Done.
more
with
duplicate
parse
and
newlines

['sense', 'it', 'stuff', 'words', 'in', 'data', 'Some', 'And', 'no', 'also', 'to', 'Done.', 'more', 'with', 'duplicate', 'parse', 'and', 'newlines']
0 голосов
/ 22 октября 2018
from nltk.tokenize import word_tokenize,sent_tokenize
list_sentence=[]
test_text_file=open('xyz.txt', 'rt')
test_text_file1=test_text_file.read()
for s in word_tokenize(test_text_file1):
    list_sentence.append(s)
print list_sentence    

это даст вам список слов

0 голосов
/ 22 октября 2018

Вы можете использовать infile.readlines().split() вместо цикла for.Более "питоническим" способом является использование оператора with, например:

with codecs.open('FILE.txt', encoding ='ascii') as infile:
        with codecs.open('FILE2.txt', encoding ='ascii') as outfile:
            outfile.write(inline.readlines().split())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...