Discuss / Python / 20201018

20201018

Topic source

多行字符串中间加了\n会多一个换行,但是在前面加r的话,这个\n会被当做字符串显示出来,r的用途是不是集体转义?

print(r'''hello,\n
world''')

hello,\n

world

练习

n = 123
f = 456.789
s1 = 'Hello, world!'
s2 = 'Hello, \'Jonney\''
s3 = r'Hello, "Jonney"'
s4 = r'''Hello,
Lisa!'''
print(n,'\n',
f,'\n',
s1,'\n',
s2,'\n',
s3,'\n',
s4)

123 

 456.789 

 Hello, world!

 Hello, 'Jonney'

 Hello, "Jonney"

 Hello,

Lisa!

如果不加'\n',则所有内容显示在一行,但是加了'\n'的内容,在前端会多一个空格

尝试在第一个变量n前加'\n',可以得到123前面多了一个空格,但也多了一个换行,且最后的Lisa! 前面就没有空格了,必须在s4赋值中的Lisa前加上空格。

修改后代码如下:

n = 123
f = 456.789
s1 = 'Hello, world!'
s2 = 'Hello, \'Jonney\''
s3 = r'Hello, "Jonney"'
s4 = r'''Hello,
 Lisa!'''
print('\n',n,'\n',
f,'\n',
s1,'\n',
s2,'\n',
s3,'\n',
s4)

结果如下:


 123 
 456.789
 Hello, world!
 Hello, 'Jonney'
 Hello, "Jonney"
 Hello,
 Lisa!

为了不让它多一个空行,再次修改print语句,将开头的'\n',改成'',使其只在变量n的打印前添加一个空格,而不换行

print('',n,'\n',
f,'\n',
s1,'\n',
s2,'\n',
s3,'\n',
s4)

这样显示结果就对了

 123 
 456.789 
 Hello, world!
 Hello, 'Jonney'
 Hello, "Jonney"
 Hello,
 Lisa!

每一行前都有一个空格,无多余空行

貌似s4的赋值语句中,r加不加都没什么影响

s4 = r'''Hello,
 Lisa!'''

#与下面的语句没有区别

s4 = '''Hello,
 Lisa!'''


  • 1

Reply