For循环不会给出正确的答案

时间:2016-05-15 12:05:09

标签: python

我的问题是我想用oe,ae,ue改变õ,ö,ä,ü(我的语言中使用的字符)。我导入了包含文本的文件:Ööülikooli siserännak(这只是一个示例),我想回来OEOEUELIKOOLI SISERAENNAK

我的代码如下所示:

failname = input("Insert the fail name: ")
fail = open(failname, encoding = "UTF-8")

for line in fail:
    if char == "õ":
        print("oe".upper(), end = "")
    elif char == "ö":
        print("oe".upper(), end = "")
    elif char == "ä":
        print("ae".upper(), end = "")
    elif char == "ü":
        print("ue".upper(), end = "")
    else:
        print(char.upper(), end = "")

结果是:

   Insert the fail name: example.txt
   ÖOEUELIKOOLI SISERAENNAK

所以我的问题是,为什么第一个角色不会改变?我也尝试过其他例子,但总是第一个保持不变。

4 个答案:

答案 0 :(得分:1)

用这个代替比较:

if char.lower() == "ö"

您也可以更新其他人,以便您可以替换大写和小写

警告char变量似乎未定义

答案 1 :(得分:1)

尝试使用它:

failname = input("Insert the fail name: ")
fail = open(failname, encoding = "UTF-8")

for line in fail: 
    for char in line:
        if char.lower() == "õ":
            print("oe".upper(), end = "")
        elif char.lower() == "ö":
            print("oe".upper(), end = "")
        elif char.lower() == "ä":
            print("ae".upper(), end = "")
        elif char.lower() == "ü":
            print("ue".upper(), end = "")
        else:
            print(char.upper(), end = "")
    print("\n")

答案 2 :(得分:0)

我不认为Ö和ö是相同的角色,就像A和a有不同的ascii值Ö和ö有不同的utf-8值尝试添加

if char == 'Ö':
   # what you want to change it to

答案 3 :(得分:0)

下次,请务必将您的代码显示为Minimal, Complete, and Verifiable Example。它包含许多小而大的错误,例如,整个文件读取部分与您的问题无关。还要想一个更具描述性的标题。

执行以下操作,而不是一次使用大量if s来决定一个字符:

string = "Ööülikooli siserännak"
string = string.upper()

for find,replace in [['Ö','OE'], ['Ü', 'UE'], ['Ä', 'AE']]:
   string = string.replace (find,replace)

print (string)

这样,您可以根据需要轻松添加更多字符对。请注意,我执行upper()作为第一步,因此您只需检查大写字母 - 这是您在代码中忘记的内容。