检查一行后,为什么此循环会成为空行?

时间:2017-12-14 12:30:37

标签: python python-3.x

该程序应该用不同的字母替换字母ö,ä,õ,ü。完成一行后,它产生一个空行,我不知道为什么。我试图理解它已经有一段时间了,但我真的不明白为什么它不能给我想要的输出。

f = input("Enter file name: ")

file = open(f, encoding="UTF-8")

for sentence in file:
    sentence = sentence.upper()
    for letter in sentence:
        if letter == "Ä":
           lause = sentence.replace(letter, "AE")
        elif letter == "Ö" or täht == "Õ":
           lause = sentence.replace(letter, "OE")
        elif letter == "Ü":
           lause = sentence.replace(letter, "UE")
    print(sentence)

2 个答案:

答案 0 :(得分:1)

读取每一行包括尾随换行符。您的print(sentence, end='')还包含换行符,因此您将获得一个空行。请尝试filename = input("Enter file name: ") with open(filename, encoding="UTF-8") as f_input: for sentence in f_input: sentence = sentence.upper() for letter in sentence: if letter == "Ä": lause = sentence.replace(letter, "AE") elif letter == "Ö" or täht == "Õ": lause = sentence.replace(letter, "OE") elif letter == "Ü": lause = sentence.replace(letter, "UE") print(sentence, end='') ,如下所示:

with open(...

注意:使用# -*- coding: utf-8 filename = input("Enter file name: ") replacements = [('Ä', 'AE'), ('ä', 'ae'), ('Ö', 'OE'), ('ö', 'oe'), ('Õ', 'OE'), ('õ', 'oe'), ('Ü', 'UE'), ('ü', 'ue')] with open(filename, encoding='utf-8') as f_input: text = f_input.read() for from_text, to_text in replacements: text = text.replace(from_text, to_text) print(text) 之后也会自动关闭您的文件。

您可能还想考虑以下方法:

userObject

这样就可以在整个文本中进行替换,而不是逐行替换。它也保留了这个案例。

答案 1 :(得分:1)

我不会修复你的程序,只是试着回答为什么它不能达到预期目的:

  1. 程序没有运行:在第14行,变量“täht”可能是一个错字,应该是“字母”
  2. 您将replace()的结果存储在变量“lause”中,但从不使用它
  3. 默认情况下print()在末尾添加“\ n”,但你可以覆盖它(参见python shell中的help(print))