2017-12-14 1 views
0

このプログラムは、ö、ä、õ、üの文字を別の文字に置き換えます。 1つの行を完了すると、空の行が生成され、なぜそれがわかりません。私はしばらくそれを理解しようとしましたが、なぜそれが私に希望の出力を与えないのか理解できませんでした。なぜこのサイクルは1つの行をチェックした後に空の行になるのですか?

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

です。あなたの入力ファイルの下部に空の行がありますか? – GPhilo

+0

入力ファイルの行間に空白行がありません。 –

+1

各行の読み込みには、末尾の改行が含まれています。あなたの 'print()'には改行も含まれているので、空の行が得られます。 'print(sentence、end = '')'を試してください –

答えて

1

各行の読み込みには、末尾の改行が含まれます。 print()には改行も含まれているため、空の行が得られます。

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(...を使用した場合も、自動的にその後、あなたのファイルを閉じます、次のようにprint(sentence, end='')を試してみてください。


また、次のアプローチを検討する必要があります:

# -*- 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) 

これは、テキスト全体ではなく、ラインごとにそれぞれの交換を行います。また、このケースも保持されます。

+0

ありがとうございます。私はコマンドf.close()しか見ていないので、このコマンドでファイルを自動的に閉じることを知らなかった。 –

1

私はちょうどそれはあなたが期待している何をしない理由を答えることをしようと、あなたのプログラムを修正されません。

  1. をプログラムが実行されない:行14で、変数「tähtは」かもしれません
  2. replace()の結果を変数 "lause"に格納しますが、使用しないでください
  3. デフォルトでprint()は最後に "\ n"を追加しますが、それ(Pythonシェルのヘルプ(print)を参照してください)
+0

1と2:ああ、私の悪い、コードのこれらの部分を翻訳するのを忘れてしまった。 3:なぜコードがそれをしたのか理解しようとしていたのです。 –

関連する問題