2016-05-15 10 views
-2

私の問題は、私の言語で使用されているõ、ö、ä、ü(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

'Ö'='ö'理由、それはです。また、実際のコードを表示してください。 'char'とは何ですか? – Biffen

答えて

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") 
0

私はOおよびOちょうどAのように同じ文字、そして持っている別のASCII値Oとは思わないとö

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

を追加する別のUTF-8値の試みではなく、このとの比較を交換しています:あなたは両方の下限と上限例に取って代わることができるように

if char.lower() == "ö" 

あなたは、また、他の人を更新することができ

警告char変数が定義されていないように見える

0

次回は、Minimal, Complete, and Verifiable Exampleとしてコードを表示してください。これには、多くの小さなエラーや大きなエラーが含まれています。たとえば、ファイルからの読み取り部分全体は、あなたの質問とは関係ありません。また、より記述的なタイトルを考えてください。

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

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

print (string) 

必要に応じて、簡単に複数の文字ペアを追加することができますこの方法:


むしろif秒の多くが付いて一度に一つの文字を決めるよりも、次の操作を行います。私は最初のステップとしてupper()を実行するので、あなたはあなたのコードで忘れたものである大文字をチェックするだけでよいことに注意してください。

関連する問題