Я пытаюсь решить проблему, когда мне нужно очистить текст (чтобы избавиться от всех знаков препинания и пробелов) и поместить его в тот же регистр.
with open("moby_01.txt") as infile, open("moby_01_clean_3.txt", "w") as outfile:
for line in infile:
line.lower
...
cleaned_words = line.split("-")
cleaned_words = "\n".join(cleaned_words)
cleaned_words = line.strip().split()
cleaned_words = "\n".join(cleaned_words)
outfile.write(cleaned_words)
Я ожидаю, что вывод программы будет списком слов, как они есть в тексте, но по одному в строке. Но оказывается, что в цикле for
повторяются только последние три строки, и на выходе получается список слов со знаками препинания:
Call
me
Ishmael.
Some
years
ago--never
mind
how
long
precisely--having
...
Возможно, вы захотите изменить это. Вы снова используете line
здесь.
cleaned_words = line.strip().split()
к
cleaned_words = cleaned_words.strip().split()
Я, наконец, нашел, как решить эту проблему. Мне помогли учебник (The Quick Python Book. Third Edition. Naomi Ceder), документация по Python и StackOverflow.
with open("moby_01.txt") as infile, open("moby_01_clean.txt","w") as outfile:
for line in infile:
cleaned_line = line.lower()
cleaned_line = cleaned_line.translate(str.maketrans("-", " ", ".,?!;:'\"\n"))
words = cleaned_line.split()
cleaned_words = "\n".join(words)
outfile.write(cleaned_words + "\n")
Я переместил -
знак из аргумента ключевого слова z
в str.maketrns(x[,y[,z]])
в x
, потому что в противном случае некоторые слова с --
остались объединенными в файле. По той же причине я добавил \n
в outfile.write(cleaned_words)