下面描述了Python中包含换行符的字符串的操作。
- 创建含有新行的字符串,打印输出(显示)。
- 换行符(CR和LF中的一种或两种,取决于系统)。
\n
(LF),\r\n
(CR+LF) - 三重报价
'''
,"""
- 如果你想缩进
- 换行符(CR和LF中的一种或两种,取决于系统)。
- 用换行符串联一个字符串列表
- 将字符串分割成换行和列表:
splitlines()
- 拆除和更换换行代码
- 打印没有尾部换行的输出
创建含有换行符的字符串,打印输出
换行符(CR和LF中的一种或两种,取决于系统)。 \n(LF), \r\n(CR+LF)
在一个字符串中插入换行代码将导致一个新行。
s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3
s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3
换行代码可以通过以下方式使用。有些编辑器允许你选择一个换行代码。
Macを含むUnix系 | \n (LF) |
Windows系 | \r\n (CR+LF) |
三重报价 ''',"""
如果用三倍引号来包围字符串,它将是一个原封不动的字符串,包括换行。
s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
如果你想缩进
三重引号也是字符串中的空格,所以如果你试图在代码中写得整齐,并像下面所示那样缩进,不必要的空格就会被插入。
s = '''
Line1
Line2
Line3
'''
print(s)
#
# Line1
# Line2
# Line3
#
通过使用反斜杠来忽略代码中的换行符,并使其成为一个延续行,可以写成如下形式
用''或””括住每一行,并在句末添加换行符←n。
s = 'Line1\n'\
'Line2\n'\
'Line3'
print(s)
# Line1
# Line2
# Line3
这里的语法是,连续的字符串字头被串联起来。详见以下文章。
如果你想在一个字符串中添加缩进,只需在每一行的字符串中添加一个空格。
s = 'Line1\n'\
' Line2\n'\
' Line3'
print(s)
# Line1
# Line2
# Line3
此外,由于在括号中可以自由地进行换行,因此可以用小括号而不是反斜线来写下面的内容。
s = ('Line1\n'
'Line2\n'
'Line3')
print(s)
# Line1
# Line2
# Line3
s = ('Line1\n'
' Line2\n'
' Line3')
print(s)
# Line1
# Line2
# Line3
如果你只想对准一行的开头,只需在第一行的三引号上加一个反斜杠。
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
用换行符串联一个字符串列表
字符串方法join()可以用来将一个字符串列表连接成一个单一的字符串。
当join()被从一个换行符中调用时,每个字符串元素都被连接上一个换行符。
l = ['Line1', 'Line2', 'Line3']
s_n = '\n'.join(l)
print(s_n)
# Line1
# Line2
# Line3
print(repr(s_n))
# 'Line1\nLine2\nLine3'
s_rn = '\r\n'.join(l)
print(s_rn)
# Line1
# Line2
# Line3
print(repr(s_rn))
# 'Line1\r\nLine2\r\nLine3'
就像上面的例子一样,内置函数repr()可以用来检查含有换行代码的字符串的原样。
将字符串分割成换行和列表: splitlines()
字符串方法splitlines()可以用来将一个字符串分割成一列换行符。
splitlines()将拆分以下任何断行代码。垂直制表符和换页符也会被分割。
\n
\r\n
\v
\f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']
拆除和更换换行代码
通过结合splitlines()和join(),可以从含有换行符的字符串中删除(移除)换行符,或者用其他字符串替换。
s = 'Line1\nLine2\r\nLine3'
print(''.join(s.splitlines()))
# Line1Line2Line3
print(' '.join(s.splitlines()))
# Line1 Line2 Line3
print(','.join(s.splitlines()))
# Line1,Line2,Line3
批量改变换行代码也是可能的。即使换行代码是混合的或未知的,也可以用splitlines()进行分割,然后与所需的换行代码相连接。
s_n = '\n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3
print(repr(s_n))
# 'Line1\nLine2\nLine3'
如上所述,splitlines()将分割任何一个新行代码,因此在结合splitlines()和join()的方法中,没有必要特别关注新行代码。
如果换行代码很清楚,也可以用replace()方法来替换,替换后的字符串。
s = 'Line1\nLine2\nLine3'
print(s.replace('\n', ''))
# Line1Line2Line3
print(s.replace('\n', ','))
# Line1,Line2,Line3
然而,请注意,如果它包含与预期不同的换行代码,它将无法工作。
s = 'Line1\nLine2\r\nLine3'
s_error = s.replace('\n', ',')
print(s_error)
# ,Line3Line2
print(repr(s_error))
# 'Line1,Line2\r,Line3'
s_error = s.replace('\r\n', ',')
print(s_error)
# Line1
# Line2,Line3
print(repr(s_error))
# 'Line1\nLine2,Line3'
可以通过重复replace()来替换多个换行代码,但如果顺序错误,就会失效,因为”\r\n “包含”\n”。上面描述的结合splitlines()和join()的方法更安全,因为不需要担心换行代码。
s = 'Line1\nLine2\r\nLine3'
print(s.replace('\r\n', ',').replace('\n', ','))
# Line1,Line2,Line3
s_error = s.replace('\n', ',').replace('\r\n', ',')
print(s_error)
# ,Line3Line2
print(repr(s_error))
# 'Line1,Line2\r,Line3'
print(','.join(s.splitlines()))
# Line1,Line2,Line3
使用rstrip()方法删除句末的换行代码。rstrip()是一个删除字符串右端空白字符(包括换行)的方法。
s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb
print(s.rstrip() + 'bbb')
# aaabbb
打印没有尾部换行的输出
print()函数默认添加了一个尾部换行。因此,如果连续执行print(),每个输出结果都将显示在一个新行上。
print('a')
print('b')
print('c')
# a
# b
# c
这是因为print()的参数end的默认值是换行符号,它指定了要加在最后的字符串。
如果你不希望在结尾处有换行,只需将参数end设置为空字符串,输出时就会在结尾处没有换行。
print('a', end='')
print('b', end='')
print('c', end='')
# abc
参数end可以是任何字符串。
print('a', end='-')
print('b', end='-')
print('c')
# a-b-c
然而,如果你想串联字符串进行输出,串联原始字符串比在print()的结束参数中指定它们更容易。参见下面的文章。