我如何在Python中指明字符串中的换行符,以便我可以将多行写入文本文件?
当前回答
值得注意的是,当你使用交互式Python shell或Jupyter Notebook检查字符串时,\n和其他反划字符串(如\t)会逐字呈现:
>>> gotcha = 'Here is some random message...'
>>> gotcha += '\nAdditional content:\n\t{}'.format('Yet even more great stuff!')
>>> gotcha
'Here is some random message...\nAdditional content:\n\tYet even more great stuff!'
换行符、制表符和其他特殊的非打印字符只有在打印或写入文件时才会呈现为空白:
>>> print('{}'.format(gotcha))
Here is some random message...
Additional content:
Yet even more great stuff!
其他回答
各种等效方法
使用打印
默认情况下,打印已经追加了换行符!
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")打开文件。
'\n'也是一样,不过你可能不需要'\r'。在Java版本中使用它的原因是什么?如果你确实需要/想要它,你也可以在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()
在Python中,你可以只使用换行符,即\n
\n分隔字符串的行。在下面的示例中,我一直在循环中写入记录。每条记录以\n分隔。
f = open("jsonFile.txt", "w")
for row_index in range(2, sheet.nrows):
mydict1 = {
"PowerMeterId" : row_index + 1,
"Service": "Electricity",
"Building": "JTC FoodHub",
"Floor": str(Floor),
"Location": Location,
"ReportType": "Electricity",
"System": System,
"SubSystem": "",
"Incomer": "",
"Category": "",
"DisplayName": DisplayName,
"Description": Description,
"Tag": tag,
"IsActive": 1,
"DataProviderType": int(0),
"DataTable": ""
}
mydict1.pop("_id", None)
f.write(str(mydict1) + '\n')
f.close()
推荐文章
- 如何在matplotlib更新一个情节
- TypeError: ` NoneType `对象在Python中不可迭代
- 如何在Vim注释掉一个Python代码块
- python标准库中的装饰符(特别是@deprecated)
- 如何从外部访问本地Django web服务器
- 删除字符串的最后3个字符
- 在python中执行no-op的标准方法是什么?
- 如何从生成器构建numpy数组?
- 什么时候我应该(不)想要在我的代码中使用熊猫apply() ?
- 数据类vs类型。NamedTuple主要用例
- 如何从macOS完全卸载蟒蛇
- 是否有可能键入提示一个lambda函数?
- 'dict'对象没有has_key属性
- 使用Pandas groupby连接来自几行的字符串
- Pandas:给定列的数据帧行之和