问题描述
为什么打印时转义序列不能在元组中起作用
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
会换行,无论您要存储什么内容,解释器都会理解您要在下一行中存储一些值的事情。因此,它就是这样打印的。