4

次の 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?>

よろしくお願いします!

4

1 に答える 1