web-dev-qa-db-ja.com

文字列、クロスプラットフォームに改行を追加する

アプリケーションでテキストを生成しています。テキストはより大きなメッセージの一部であるため、改行を追加する必要がある場合もあります。

NEWLINE = '\n'  # TODO: how to define this cross-platform? Can I use os.linesep?

def get_txt(add_newline=False):
    txt = 'Hello'
    if add_newline:
        txt += NEWLINE
    return txt

これは次のように使用できます。

def get_message():
    msg = get_txt(True)
    msg += get_txt(True)
    msg += get_txt(False)
    return msg

どちらが返されますか:

Hello
Hello
Hello (no newline here)

クロスプラットフォームの方法でNEWLINEを定義するにはどうすればよいですか?またはさらに良いことに、文字列に改行を追加できる関数が標準ライブラリ(またはPythonに含まれています)にありますか? (必ずしも印刷するときではなく、メモリ内の文字列に改行を追加するだけです)。使用された改行は、プラットフォームに適したものである必要がありますpython is running

12
dangonfast

私はいつも改行文字'\n'改行を表すために、Windowsでは改行と復帰文字を使用していますが、Windowsマシン(python 3.4)でテストして、メモリ内に文字列を作成し、それをファイルに書き込みましたが、メモリ内では1文字のままです( '\n')ただし、ファイルに書き込むと、ウィンドウで終了する正しい行になるように2文字に変換されます。
これまで、これに問題のある単一のライブラリに出会う必要はありません。

7
James Kent

これで試すことができます:

import os
print(os.linesep)
16
decadenza

メッセージを新しい行として表示するには、メッセージを印刷する必要があります。

get_txt()
msg = get_message()
print(msg)

あなたに与えるでしょう:

Hello
Hello
Hello

ファイルに出力することを確認する必要があるだけです。

0
Aryn Choong