与Java(以字符串形式)相比,您将执行类似"First Line\r\nSecond Line"的操作。 br />

评论

你尝试了什么?奏效了吗? (我想不是,否则您不会问。)发生了什么事?

我只是想知道是否有对与错的方式来做,但是我还没有尝试过。

您确实意识到Python的打印功能类似于Java中的System.out.println,并在文本后自动添加换行符,对吗?

Python中的print语句还可以用于写入文件(Python 2.x和Python 3.x之间的详细信息有所不同,因此请参考您所用版本的参考文档)。在Python 2.x中打印-在Python 3.x中打印

解决方法是:Python做普通的香草IO成功地翻译了'\ n'。但是,如果您想真正找到平台的实际线路,该怎么办?然后您需要os.linesep。

#1 楼

这取决于您想要的正确程度。 \n通常会完成这项工作。如果您确实想解决问题,请在os软件包中查找换行符。 (实际上称为linesep。)注意:使用Python API写入文件时,请勿使用os.linesep。只需使用\n; Python会自动将其转换为适合您平台的换行符。

评论


从链接中提供了“编写文本模式下打开的文件时,不要使用os.linesep作为行终止符(默认);在所有平台上,请使用单个'\ n'。”那么,您所说的“正确”是什么意思?发表这些评论的原因是什么?

–亚森
2014年11月22日18:41

@Yasen:在Windows上,换行符顺序为“ \ r \ n”。这意味着os.linesep将为“ \ r \ n”。当您以文本模式写入文件时,它会在写入时进行换行翻译。也就是说,输出中的每个“ \ n”将在结果文件中转换为“ \ r \ n”。如果您所写的文本已经包含“ \ r \ n”序列,您会发现这是一个问题:每行的末尾结果将是“ \ r \ r \ n”。我至少认为:我实际上没有尝试过。

–内特C-K
2015年1月6日在4:40



可能是时候解决问题并删除错误的os.linesep建议了,不是吗?我相信这不会是一场大戏,作者的骄傲也不会受到太大影响

– ZAB
18年1月9日在9:53

你不知道我的骄傲。但更重要的是,我认为注意到并存在lineep很有用,这样您就可以找出系统行分隔符是什么。

–查理·马丁(Charlie Martin)
18年1月9日在19:20

@ZAB并非所有字符串都以文本模式写入文件。 lineep仍然有用。

–凯尔·斯特兰德(Kyle Strand)
19年5月30日在19:23

#2 楼

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

示例:

    print('First line \n Second line') 


其中\n是换行符。

此会产生以下结果:

First line
 Second line


如果使用Python 2,则不要在print函数上使用括号。

评论


就像一个建议一样,如果我们在\ n之后不给“空白”,则第二行中不会出现一个空格缩进。我的意思是:打印'第一行\ n第二行'

–Manoj Kumar
16-4-1在18:04



感谢您指出要在字符串中使用转义的“ \ n” char!对于像我这样的Python新手来说可能并不明显

– GreyedFox
2016年9月6日下午13:39

@ all / anyone / ManojKumar a = 1; b = 2;打印(a,“ \ n”,b); o / p:1 2(2在新行上带有一个空格缩进,它看起来不正确,但是假设1和2在单独的行上,一个空格缩进于2)在这种情况下,我将如何删除白空格(一个空格缩进)在2之前,并将缩进1。注意:我们将不使用2打印语句,并且1和2将在单独的(新)行上。

–PRAFUL ANAND
17年5月1日在15:25



#3 楼

您可以分别在换行中写,也可以在单个字符串中写,这更容易。

示例1

输入

line1 = "hello how are you"
line2 = "I am testing the new line escape sequence"
line3 = "this seems to work"


您可以单独编写'\ n':

file.write(line1)
file.write("\n")
file.write(line2)
file.write("\n")
file.write(line3)
file.write("\n")


输出

hello how are you
I am testing the new line escape sequence
this seems to work


示例2

输入

正如其他人在前面的答案中指出的那样,将\ n放在字符串中的相关点上:

line = "hello how are you\nI am testing the new line escape sequence\nthis seems to work"

file.write(line)


输出

hello how are you
I am testing the new line escape sequence
this seems to work


评论


我认为您的输出在技术上是不正确的。第二和第三行应在其第一个字符的左侧打印一个空格。另一个解决方案是从line变量中删除这两个空格。

–克里斯蒂安·威斯布鲁克
18年1月31日在17:41

无论如何,示例二中的代码不会产生您所显示的确切输出。

–克里斯蒂安·威斯布鲁克
18年1月31日在17:41

#4 楼

如果您一次输入多行文本,我会发现这是最易读的格式。

(这会导致错误)。

评论


您的内部括号,因此不必转义行。只需结束字符串,移至新行,然后开始新的一行即可。不会再有其他任何新行,您也无需逃脱。此外,即使您确实做了上述操作,换行符和转义符也相互抵消。

–user144153
19年8月31日在15:57

#5 楼

在Python中,您只能使用换行符,即\n

评论


@maazza:这不是写作的问题吗?

–mhawke
2015年12月9日在11:07

#6 楼

独立于平台的换线器:Linux,Windows和IOS

 import os
keyword = 'physical'+ os.linesep + 'distancing'
print(keyword)
 


输出:

 physical
distancing
 


评论


非常感谢您返回并更改为“物理距离”以实现共视

–布莱迪·希格比(Brody Higby)
20年8月8日在16:47

#7 楼

最简单的解决方案

如果仅调用不带任何参数的print,则将输出空白行。

print


您可以将输出通过管道传输到像这样的文件(考虑您的示例):

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


它不仅与操作系统无关(甚至无需使用os软件包),而且比放置文件更具可读性字符串中的\nprint()。因此,当您调用end时,Python实际上正在打印\n。这意味着当您仅调用print('hello')而没有任何参数时,它实际上是在打印'hello' + '\n',这会导致换行。

替代

使用多行字符串。

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


#8 楼

'\n'相同,尽管您可能不需要'\r'。您在Java版本中使用它是有原因的吗?如果确实需要/想要它,也可以在Python中以相同的方式使用它。

评论


\ r是回车符,当您获得换行的系统属性时,它显示为\ r \ n

–FabianCook
2012年7月16日在2:42

@SmartLemon:在Windows上可能是正确的,但是在大多数其他系统上,\ n是唯一的换行符。

– Greg Hewgill
2012年7月16日下午3:14

@Jean-MichaëlCelerier:在Mac OS X之前是这样。MacOS X使用\ n。

– Greg Hewgill
13年7月31日在2:40

好的,我将删除我的评论,那真的没用。抱歉!

–让·米歇尔·塞勒里耶(Jean-MichaëlCelerier)
13年7月31日在3:09

#9 楼

Java字符串文字中的大多数转义字符在Python中也有效,例如“ \ r”和“ \ n”。

评论


因为Python和Java受到C的影响,而C和C正是来自这种语言。有关更多信息。

– Alex.K.
2015年1月4日,12:47

#10 楼

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

# Output:
In [37]: print(test_line)

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


#11 楼

如其他答案中所述:“换行符为\ n。它在字符串中使用。”
我发现最简单易读的方式是使用“格式”函数,将nl用作名称换一行,然后将要打印的字符串中断为要打印的确切格式:输出:
print("line1{nl}"
      "line2{nl}"
      "line3".format(nl="\n"))

通过这种方式执行任务,并且还提高了代码的可读性:)

#12 楼

值得注意的是,当您使用交互式python shell或Jupyter笔记本检查字符串时,\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!'


#13 楼

\ 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()