如何在Python中正确地编写原始多行字符串?

11
  1. 我知道有几种方法可以创建多行字符串:

三重引号

'''
This is a 
multi-line
string.
'''

连接字符串

('this is '
'a string')

转义字符

'This is'\
'a string'
  1. I also know that prefixing the string with r will make it a raw string, useful for filepaths.

    r'C:\Path\To\File'
    

然而,我有一个很长的文件路径,跨越多行并且需要是原始字符串。我该怎么办?

以下代码可行:

In [1]: (r'a\b'
   ...: '\c\d')
Out[1]: 'a\\b\\c\\d'

但出于某些原因,这并不起作用:
In [4]:  (r'on\e'
   ...: '\tw\o')
Out[4]: 'on\\e\tw\\o'

为什么"t"只有一个反斜杠?

8
r'''...''' 可以很好地生成一个多行的原始字符串。 - jasonharper
3
不,它添加了\n来表示新行:In [7]: r'''path\to ...: \file''' Out[7]: 'path\\to\n\\file' - Josh D
1
三重引号用于创建包含换行符的多行字符串。连接和转义用于创建单行字符串的多行代码表示。 - Jeyekomon
2个回答

16

每个字符串字面量都需要添加 r 前缀。

>>> (r'on\e'
     r'\tw\o')
'on\\e\\tw\\o'

否则,第一个部分将被解释为原始字符串文字,但下一行字符串不会这样做,因此 '\t' 将被解释为制表符。

1
长文件路径真是让人头疼。有没有其他关于原始多行字符串的想法? - Josh D
@JoshD 这是所有需要分成多行的字符串(不仅仅是原始字符串)的首选解决方案之一 - Jeyekomon

0

我认为你可能还需要将第二行也变成原始字符串,方法是像在r'on\e'中一样,在前面加上r。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接