我如何在Python中指明字符串中的换行符,以便我可以将多行写入文本文件?


当前回答

这里有一个更易读的解决方案,即使你不在顶级缩进(例如,在函数定义中),它也能正确工作。

import textwrap
file.write(textwrap.dedent("""
    Life's but a walking shadow, a poor player
    That struts and frets his hour upon the stage
    And then is heard no more: it is a tale
    Told by an idiot, full of sound and fury,
    Signifying nothing.
"""))

其他回答

这里有一个更易读的解决方案,即使你不在顶级缩进(例如,在函数定义中),它也能正确工作。

import textwrap
file.write(textwrap.dedent("""
    Life's but a walking shadow, a poor player
    That struts and frets his hour upon the stage
    And then is heard no more: it is a tale
    Told by an idiot, full of sound and fury,
    Signifying nothing.
"""))

\n -简单换行符插入工作:

# Here's the test example - string with newline char:
In [36]: test_line = "Hi!!!\n testing first line.. \n testing second line.. \n and third line....."

输出:

In [37]: print(test_line)

Hi!!!
 testing first line..
 testing second line..
 and third line.....

'\n'也是一样,不过你可能不需要'\r'。在Java版本中使用它的原因是什么?如果你确实需要/想要它,你也可以在Python中以同样的方式使用它。

各种等效方法

使用打印

默认情况下,打印已经追加了换行符!

with open("out.txt", "w") as f:
    print("First", file=f)
    print("Second", file=f)

等同于:

with open("out.txt", "w") as f:
    print("First\nSecond", file=f)

要打印而不自动添加换行符,使用sep=""(因为sep="\n"是默认值):

with open("out.txt", "w") as f:
    print("First\nSecond\n", sep="", file=f)

使用f.write

对于以文本模式打开的文件:

with open("out.txt", "w") as f:
    f.write("First\nSecond\n")

对于以二进制模式打开的文件,写入文件时不会自动将\n转换为特定于平台的行结束符。要强制使用当前平台的换行符,请使用os。Linesep代替\n:

with open("out.txt", "wb") as f:
    f.write("First" + os.linesep)
    f.write("Second" + os.linesep)

输出文件

视觉:

First
Second

在Linux上,换行符将以\n分隔:

First\nSecond\n

在Windows中,换行符将以\r\n分隔:

First\r\nSecond\r\n

为了避免以文本模式打开的文件自动将\n转换为\r\n,请使用open("out.txt", "w", newline="\n")打开文件。

在Python中,你可以只使用换行符,即\n