#python #for-loop #readlines #writefile
Вопрос:
У меня есть проект, над которым я работаю, но мне нужна помощь. Моя главная цель-сделать так, чтобы переведенный текстовый файл выглядел так же, как и исходный файл, за исключением переведенных слов.
Вот как выглядит фрагмент исходного файла:
Вот мой код на python:
# Step 1: Import the english.txt file
import json
english_text = open('/home/jovyan/english_to_lolspeak_fellow/english.txt', 'r')
text = english_text.readlines()
english_text.close()
# Step 2: Import the glossary (the tranzlashun.json file)
with open('/home/jovyan/english_to_lolspeak_fellow/tranzlashun.json') as translationFile:
data = json.load(translationFile)
# Step 3:Translate the English text into Lolspeak
translated_text= ''
for line in text:
for word in line.split():
if word in data:
translated_text = data[word.lower()] " "
else:
translated_text = word.lower() " "
pass
# Step 4 :Save the translated text as the "lolcat.txt" file
with open('/home/jovyan/english_to_lolspeak_fellow/lolcat.txt', 'w') as lolcat_file:
lolcat_file.write(translated_text)
lolcat_file.close()
И, наконец, вот как выглядит мой вывод:
Как вы можете видеть, мне удалось перевести файл, но исходный интервал игнорируется. Как мне изменить свой код, чтобы сохранить интервал, как это было раньше?
Ответ №1:
Вы можете сохранить пробелы, читая по одной строке за раз.
with open('lolcat.txt', 'w') as fw, open('english.txt') as fp:
for line in fp:
for word in line.split():
line = line.replace(word, data.get(word.lower(), word))
fw.write(line)
Ответ №2:
Я бы предложил объединить шаги 3 и 4, чтобы перевести каждую строку и написать строку, а затем n, чтобы начать следующую строку.
Я не проверял следующее в компиляторе, поэтому вам, возможно, придется изменить его, чтобы заставить его работать.
Примечание.Я изменил » w » на «a», поэтому он добавляется, а не просто записывается, и использование afaik » с » означает, что файл закроется, поэтому вам не нужно явно закрывать ().
for line in text:
translated_line = ""
for word in line.split():
if word in data:
translated_line = data[word.lower()] " "
else:
translated_line = word.lower() " "
with open('/home/jovyan/english_to_lolspeak_fellow/lolcat.txt', 'a') as lolcat_file:
lolcat_file.write(translated_line)
write("n")