Я хочу прочитать несколько строк из файла .txt - PullRequest
0 голосов
/ 26 июня 2019

Я хочу прочитать несколько строк из файла .txt.Каждая строка представляет вопрос, на который будет отвечать скрипт Python NLTK, тогда ответ будет записан в другом файле .txt.Мне удалось заставить этот механизм работать, но только для одной строки (одного вопроса) в файле Question.txt (файл, из которого берутся вопросы).

Как я вижу сценарий, я бы хотелчтобы прочитать строку из файла Question.txt, сценарий ответит и запишет ответ в файл Answer.txt.Затем вторая строка будет прочитана из файла Question.txt и т. Д.

myFile = open("Questions.txt", 'r')
user_response=str(myFile.splitlines())  # Convert the content of the txt file from list format to string format in order to be able to lower the characters later

#I also made this little implementation in order for the code not to run infinitely, so to count the number of lines :
numOfLines = len(user_response.splitlines())
numofLines -= 1

Ответы [ 3 ]

0 голосов
/ 26 июня 2019

Python 3

Что нужно сделать:

  1. Читать все строки
  2. Рассчитайте все ответы
  3. Запишите все ответы обратно в файл

Я предположил, что ваш метод ответа на вопрос называется answer_question(question):

# 1
with open("Questions.txt") as questions_file:
    questions = questions_file.read().splitlines()

# 2
answers = []
for question in questions:
    answer = answer_question(question)  # or use question.lower() if you want to 
    answers.append(answer)

# 3
with open("Answers.txt", mode="w") as answers_file:
    answers_file.write("\n".join(answers))
0 голосов
/ 30 июня 2019

В python файлы являются итераторами, поэтому, чтобы избежать хранения больших массивов в памяти, ваше простое решение:

with open("Questions.txt) as q_f, open("Answers.txt", 'w') as a_f:
    for question in q_f:
        answer = solve(question)
        a_f.write(answer+"\n")

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

0 голосов
/ 26 июня 2019

Вы можете использовать myFile.readlines (), чтобы получить список с каждой строкой, или вы также можете использовать myFile.read ()

...