pla*_*etp 0 python string string-literals
我希望将相邻的字符串组合成Python中的单个"原始"字符串,例如
>>> s = (
... r"foo\tbar\n"
... "baz\tqux\n")
Run Code Online (Sandbox Code Playgroud)
然而,这只会使第一部分'原始':
>>> print(s)
foo\tbar\nbaz qux
>>>
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式传播'r'到所有相邻的文字?
该r前缀是所述文字符号的一部分,所得到的字符串对象不一部分.
在每一行使用它,这里没有捷径:
s = (
r"foo\tbar\n"
r"baz\tqux\n")
Run Code Online (Sandbox Code Playgroud)
如果你真的有很多这些并找到所有那些r繁琐的前缀,你可以使用原始的多行字符串(三重引号)并删除换行符:
s = ''.join(r"""
foo\tbar\n
baz\tqux\n
""".splitlines())
Run Code Online (Sandbox Code Playgroud)
请注意,这不会删除初始空格,因此您必须在第0列开始每一行或使用textwrap.dedent()为您删除一致的前导空格:
from textwrap import dedent
s = ''.join(dedent(r"""
foo\tbar\n
baz\tqux\n
""").splitlines())
Run Code Online (Sandbox Code Playgroud)
快速演示:
>>> 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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |