Python原始字符串

时间:2020-02-23 14:43:12  来源:igfitidea点击:

Python原始字符串是通过在字符串文字前添加" r"或者" R"来创建的。
Python原始字符串将反斜杠()视为文字字符。
当我们想要一个包含反斜杠的字符串并且不希望将其视为转义字符时,这很有用。

Python原始字符串

假设我们要在python中创建字符串Hi \ nHello。
如果我们尝试将其分配给普通字符串,则\ n将被视为新行。

s = 'Hi\nHello'
print(s)

输出:

Hi
Hello

让我们看看原始字符串如何帮助我们将反斜杠视为普通字符。

raw_s = r'Hi\nHello'
print(raw_s)

输出:Hi \ nHello

让我们看另一个示例,在该示例中,后跟反斜杠的字符没有任何特殊含义。

>>> s = 'Hi\xHello'
File "<input>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \xXX escape

我们收到错误消息是因为python不具有任何特殊含义,因此不知道如何解码" \ x"。
让我们看看如何使用原始字符串创建相同的字符串。

>>> s = r'Hi\xHello'
>>> print(s)
Hi\xHello

如果您在Python控制台上,则创建如下所示的原始字符串。

>>> r'Hi\xHello'
'Hi\xHello'

不要混淆输出带有两个反斜线。
只是将其显示为转义了反斜杠的普通python字符串。

Python Raw字符串和引号

当反斜杠后跟原始字符串中的引号时,它会被转义。
但是,反斜杠也保留在结果中。
由于此功能,我们无法创建单反斜杠的原始字符串。
另外,原始字符串的末尾不能有奇数个反斜杠。

一些无效的原始字符串是:

r'\'  # missing end quote because the end quote is being escaped
r'ab\'  # first two backslashes will escape each other, the third one will try to escape the end quote.

我们来看一些带引号的有效原始字符串示例。

raw_s = r'\''
print(raw_s)

raw_s = r'ab\'
print(raw_s)

raw_s = R'\"'  # prefix can be 'R' or 'r'
print(raw_s)

输出:

\'
ab\
\"