如何在Python中从多个文本创建单个原始字符串?

2024-09-27 19:26:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在Python中将相邻的字符串组合成一个“原始”字符串,例如

>>> s = (
...     r"foo\tbar\n"
...     "baz\tqux\n")

然而,这只会让第一部分变得“原始”:

>>> print(s)
foo\tbar\nbaz   qux

>>>

我能把'r'传播到所有相邻的文本吗?你知道吗


Tags: 字符串文本foobaz中将printquxtbar
1条回答
网友
1楼 · 发布于 2024-09-27 19:26:30

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'

相关问题 更多 >

    热门问题