为什么不转义序列在元组中起作用

问题描述

为什么打印时转义序列不能在元组中起作用

 x = ("a\n","b\n","c\n") 
 y = ("a\n" "b\n" "c\n")
 print (x)
 print(y)

为什么打印(x)返回('a\n','b\n','c\n')并打印(y)

a 
b
c

解决方法

转义序列有效。 hide()被打印为元组,因为它元组。如果要加入其元素,请使用x,或让str.join()为您加入。

print()

同时,>>> x = ('a\n','b\n','c\n') >>> x ('a\n','c\n') >>> ''.join(x) 'a\nb\nc\n' >>> print(''.join(x)) a b c >>> print(*x,sep='') a b c >>> 是一个由于string literal concatenation而引起的字符串

y
,

尝试一下

print("a{nl}"
      "b{nl}"
      "c".format(nl="\n"))
,

因为("a\n","b\n","c\n")是一个元组,但是("a\n" "b\n" "c\n")是一个字符串

("a\n" "b\n" "c\n")"a\n" "b\n" "c\n"相同,而又与"a\nb\nc\n"相同。

"Hello,world."字符串 literal 可以写为"Hel" "lo,wor" "ld.",部分之间没有+。)


现在,print()函数将打印一个非字符串对象(例如您的元组)首先将其转换为字符串,并使用其.__str()__方法(产生相同的结果)结果作为标准函数str())。

str(("a\n","c\n"))的结果是字符串"('a\\n','b\\n','c\\n')"其中没有换行符,如您所见,它由以下21个字符组成:
( ' a \ n ' , ' b \ n ' , ' c \ n ' )


与元组的这种字符串表示形式相反,字符串("a\n" "b\n" "c\n")别名"a\nb\nc\n"由6个字符组成,其中3个换行符:

a \n b \n c \n

,

默认情况下,\n会换行,无论您要存储什么内容,解释器都会理解您要在下一行中存储一些值的事情。因此,它就是这样打印的。