#python #file-io #nltk #tokenize
Вопрос:
Пожалуйста, простите мой невежественный вопрос. Я нахожусь на начальной стадии изучения Python. Я хочу преобразовать Before_text в After_text.
<Before_text>
Today, I got up early, so I’m absolutely exhausted. I had breakfast: two slices n
of cold toast and a disgusting coffee, then I left the house at 8 o’clock still n
feeling half asleep. Honestly, London’s killing me!
<After_text>
Today, I got up early, so I’m absolutely exhausted.
I had breakfast: two slices of cold toast and a disgusting coffee, then I left the house at 8 o’clock still feeling half asleep.
Honestly, London’s killing me!
На самом деле, независимо от кода, мне нужно только получить этот результат (After_text).
Я использовал этот код:
import sys, fileinput
from nltk.tokenize import sent_tokenize
if __name__ == "__main__":
buf = []
for line in fileinput.input():
if line.strip() != "":
buf = [line.strip()]
sentences = sent_tokenize(" ".join(buf))
if len(sentences) > 1:
buf = sentences[1:]
sys.stdout.write(sentences[0] 'n')
sys.stdout.write(" ".join(buf) "n")
Возникает следующая ошибка:
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
<ipython-input-1-ef8b2fcb97ad> in <module>()
5 buf = []
6
----> 7 for line in fileinput.input():
8 if line.strip() != "":
9 buf = [line.strip()]
-------------------------1 frames--------------------------------------------------
/usr/lib/python3.7/fileinput.py in _readline(self)
362 self._file = self._openhook(self._filename, self._mode)
363 else:
--> 364 self._file = open(self._filename, self._mode)
365 self._readline = self._file.readline # hide FileInput._readline
366 return self._readline()
FileNotFoundError: [Errno 2] No such file or directory: '-f'
В чем причина этой ошибки? Где ошибка в этом коде?
И как и где я могу загрузить и сохранить текстовый файл?
Пожалуйста, научи меня~
Комментарии:
1. Что вы можете сделать, так это прочитать файл и повторить строки, используя цикл for
2. Похоже, что командная строка, которую вы используете для запуска этой программы, включает
< -f
в себя «принимать входные данные из файла с именем-f», но такого файла нет. Может быть, вы имели в виду что-то вроде< myfile.txt
этого ?
Ответ №1:
Если вы хотите использовать fileinput.input (), вы должны указать имена входных файлов в качестве аргументов ( sys.argv
), простой пример, если у вас есть cat.py
следующее
import fileinput
for line in fileinput.input():
print(line, end='')
и текстовые файлы file1.txt
, file2.txt
, file3.txt
в том же каталоге, то использование:
python cat.py file1.txt file2.txt file3.txt
Комментарии:
1. Мне действительно не нужен основной код выше. Все, что мне нужно, это это. 1. Загрузите текстовый файл. 2. Удалите все разрывы строк в конце строки и снова подключите их. 3. Новое предложение начинается с новой строки. 4. Сохраните переведенный текст.
Ответ №2:
Согласно документам, fileinput.input()
это ярлык, который берет данные из командной строки и пытается открывать их по одному за раз, или, если ничего не указано, он использует stdin
их в качестве входных данных.
Пожалуйста, покажите нам, как вы вызываете свой скрипт. Я подозреваю, что у вас -f
там есть, что функция пытается открыть.