在字符串,跨平台添加换行符

dan*_*ast 9 python linux windows cross-platform newline

我在我的应用程序中生成了一些文本.由于文本是更大的消息的一部分,有时我需要添加换行符,有时不是:

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
Run Code Online (Sandbox Code Playgroud)

这可以使用如下:

def get_message():
    msg = get_txt(True)
    msg += get_txt(True)
    msg += get_txt(False)
    return msg
Run Code Online (Sandbox Code Playgroud)

哪个会回归:

Hello
Hello
Hello (no newline here)
Run Code Online (Sandbox Code Playgroud)

如何NEWLINE以跨平台方式定义?或者更好的是,标准库中是否有一个函数(或包含在python中),它可以在字符串中附加换行符?(不一定在打印时,只需在内存中添加换行符).使用的换行符应该是python正在运行的平台的正确行

dec*_*nza 14

你可以尝试这个:

import os
print(os.linesep)
Run Code Online (Sandbox Code Playgroud)


Jam*_*ent 6

我一直都使用换行符'\n'来表示换行符,尽管Windows使用换行符和回车符,但是我在Windows机器(python 3.4)上进行了测试,在内存中构建了一个字符串,然后在内存中将其写入文件它保留为单个字符('\n'),但是当写入文件时,它将转换为两个字符以使正确的行在Windows上结束。
到目前为止,我还没有遇到一个与此有关的库。