【问题标题】:How to correctly write a raw multiline string in Python?如何在 Python 中正确编写原始多行字符串?
【发布时间】:2018-02-10 17:00:13
【问题描述】:
  1. 我知道您可以通过以下几种方式创建多行字符串:

三引号

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

连接

('this is '
'a string')

转义

'This is'\
'a string'
  1. 我也知道在字符串前面加上 r 会使其成为原始字符串,对文件路径很有用。

    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" 只有一个反斜杠?

【问题讨论】:

  • r'''...''' 可以很好地制作原始多行字符串。
  • @jasonharper 不,它没有,它为新行添加了\nIn [7]: r'''path\to ...: \file''' Out[7]: 'path\\to\n\\file'
  • 三引号用于创建多行字符串(包含换行符的字符串)。连接和转义用于创建单行字符串的多行代码表示

标签: python string multiline rawstring


【解决方案1】:

您需要在每个字符串文字上添加 r 前缀

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

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

【讨论】:

  • 对于长文件路径来说,这是一件令人头疼的事情。对于原始多行字符串还有其他想法吗?
  • @JoshD 这是one of the preferred solutions,用于需要拆分为多行的所有字符串(不仅仅是原始字符串)。
【解决方案2】:

我认为您可能还需要像在 r'on\e' 中所做的那样,通过在第二行前面加上 r 来将其设为原始字符串

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 2014-05-20
    • 2013-01-19
    • 2011-12-17
    • 2013-09-24
    相关资源
    最近更新 更多