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


当前回答

简单的解决方案

如果只调用print而不带任何参数,它将输出一个空行。

print

你可以像这样将输出管道到一个文件中(考虑到你的例子):

f = open('out.txt', 'w')
print 'First line' >> f
print >> f
print 'Second line' >> f
f.close()

它不仅与操作系统无关(甚至不需要使用操作系统包),而且比将\n放在字符串中更具可读性。

解释

print()函数有一个可选的关键字参数,用于字符串的结尾,称为end,默认为操作系统的换行符,例如。\ n。所以,当你调用print('hello')时,Python实际上打印的是'hello' + '\n'。这意味着当你只调用print而不带任何参数时,它实际上打印的是" + '\n',结果是换行符。

替代

使用多行字符串。

s = """First line
    Second line
    Third line"""
f = open('out.txt', 'w')
print s >> f
f.close()

其他回答

简单的解决方案

如果只调用print而不带任何参数,它将输出一个空行。

print

你可以像这样将输出管道到一个文件中(考虑到你的例子):

f = open('out.txt', 'w')
print 'First line' >> f
print >> f
print 'Second line' >> f
f.close()

它不仅与操作系统无关(甚至不需要使用操作系统包),而且比将\n放在字符串中更具可读性。

解释

print()函数有一个可选的关键字参数,用于字符串的结尾,称为end,默认为操作系统的换行符,例如。\ n。所以,当你调用print('hello')时,Python实际上打印的是'hello' + '\n'。这意味着当你只调用print而不带任何参数时,它实际上打印的是" + '\n',结果是换行符。

替代

使用多行字符串。

s = """First line
    Second line
    Third line"""
f = open('out.txt', 'w')
print s >> f
f.close()

新的行字符是\n。它用于字符串内部。

例子:

    print('First line \n Second line') 

其中\n是换行符。

这将产生如下结果:

First line
 Second line

如果使用Python 2,则不对打印函数使用圆括号。

Use:

"{}\n{}\n{}".format(
    "line1",
    "line2",
    "line3"
)

我个人更喜欢这种形式。

\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.....

各种等效方法

使用打印

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

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")打开文件。