次の Python 3.x コードを検討してください。
class FancyWriter:
def write(self, string):
print('<'+string+'>')
return len(string)+2
def testFancyWriter():
fw = FancyWriter()
print("Hello World!", file=fw)
print("How many new lines do you see here?", file=fw)
print("And here?", file=fw)
return
testFancyWriter()
出力は次のようになります。
<Hello World!>
<
>
<How many new lines do you see here?>
<
>
<And here?>
<
>
これらの空白行が間にあるのはなぜですか?
OK - FancyWriter クラスのようなものを作成する本当の意図は、実際には Excel のライター クラスを作成することでした。タブ付きテキスト行を Excel セルに、Excel 行の各行を、タブ区切りの各部分文字列をセルに書き込む必要があります。その行の。奇妙なことに、その ExcelWriter クラス (上記のような write() 関数もあり、print() の呼び出しがセル値の設定に置き換えられているだけです) で、同様の現象が発生します - FancyWriter のように空白行があります。上記のクラスの出力!(着信文字列の最後の文字が '\n' の場合、ターゲット セルを 1 行下に移動します。)
誰かがこれを説明できますか?文字通りの意味で、行間で実際に何が起こっているのでしょうか?
そして、次のような目的の出力を取得するための書き込み関数を備えた FancyWriter (出力? ファイル?) クラスの「最もpythonicな方法」は何でしょうか?
<Hello World!>
<How many new lines do you see here?>
<And here?>
よろしくお願いします!