2024-09-27 19:26:30 发布
网友
我想在Python中将相邻的字符串组合成一个“原始”字符串,例如
>>> s = ( ... r"foo\tbar\n" ... "baz\tqux\n")
然而,这只会让第一部分变得“原始”:
>>> print(s) foo\tbar\nbaz qux >>>
我能把'r'传播到所有相邻的文本吗?你知道吗
'r'
r前缀是文字符号的一部分,而不是结果字符串对象的一部分。你知道吗
r
在每一行使用它,这里没有快捷方式:
s = ( r"foo\tbar\n" r"baz\tqux\n")
如果您真的有很多这样的前缀并且发现所有那些r前缀都很麻烦,您可以使用原始的多行字符串(三重引号)并删除换行符:
s = ''.join(r""" foo\tbar\n baz\tqux\n """.splitlines())
请注意,这不会删除初始空格,因此您必须从第0列开始每行,或者使用^{}删除一致的前导空格:
from textwrap import dedent s = ''.join(dedent(r""" foo\tbar\n baz\tqux\n """).splitlines())
快速演示:
>>> s = ( ... r"foo\tbar\n" ... r"baz\tqux\n") >>> s 'foo\\tbar\\nbaz\\tqux\\n' >>> s = ''.join(r""" ... foo\tbar\n ... baz\tqux\n ... """.splitlines()) >>> s 'foo\\tbar\\nbaz\\tqux\\n' >>> from textwrap import dedent >>> s = ''.join(dedent(r""" ... foo\tbar\n ... baz\tqux\n ... """).splitlines()) >>> s 'foo\\tbar\\nbaz\\tqux\\n'
r
前缀是文字符号的一部分,而不是结果字符串对象的一部分。你知道吗在每一行使用它,这里没有快捷方式:
如果您真的有很多这样的前缀并且发现所有那些
r
前缀都很麻烦,您可以使用原始的多行字符串(三重引号)并删除换行符:请注意,这不会删除初始空格,因此您必须从第0列开始每行,或者使用^{} 删除一致的前导空格:
快速演示:
相关问题 更多 >
编程相关推荐