Python原始字符串的完整指南

1,442 阅读2分钟

Python有多种方法来写字符串字面。我们也可以将这些字符串类型中的任何一种转换为raw。你可以用单引号或双引号写一个字符串。

Python 原始字符串

Python 原始字符串是一个以rR 为前缀的普通字符串。

要在Python中创建一个raw字符串,在字符串字面前加上'r''R'。原始字符串将反斜杠 (\)作为字面字符处理。为了理解原始字符串的含义,请看下面的字符串,它的序列是"\n " 和 "\t"。

str = "Well\thello beautiful\nsaid by joker"
print(str)

输出

Well	hello beautiful
said by joker

这里,str是一个正则字符串,所以它把"\n " 和 "\t " 当作转义字符。

让我们用它来创建一个原始字符串,看看它的结果如何:

raw_str = r"Well\thello beautiful\nsaid by joker"
print(raw_str)

输出

Well\thello beautiful\nsaid by joker

在这种情况下,原始字符串不会将"\n ""\t "作为转义字符。

使用原始字符串的地方

你可以在你不需要该字符串的处理版本时使用原始字符串。例如,如果你的字符串包含任何无效的转义字符,如\x或\k,它将抛出一个SyntaxError

str = "Well\xhello beautiful"
print(str)

输出

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 4-5: truncated \xXX escape

你可以看到我们得到了一个SyntaxError,因为Python不知道如何解码'\x',因为它没有任何特殊含义。

如果我们使用一个原始的字符串,这个错误就可以避免了:

str = r"Well\xhello beautiful"
print(str)

输出

Well\xhello beautiful

Python 中无效的原始字符串

如果你认为所有的原始字符串都是有效的,那么你就错了。有可能存在无效的原始字符串。例如,一个只包含一个反斜杠的原始字符串是无效的。

invalidRawA = r"\"
print(invalidRawC)

输出

  invalidRawA = r"\"
                      ^
SyntaxError: EOL while scanning string literal

或这些种类的原始字符串是无效的:

invalidRawB = r"abc\"
invalidRawC = r"abc\\\"

结论

Python的原始字符串将**反斜杠(\ )作为一个字面字符操作。例如,如果我们想打印一个里面有*"\t "的字符串,它就会添加空格。但是如果我们把它变成一个原始字符串,它将只把"\t "作为一个普通字符打印出来。

在这个例子中,我们已经看到了如何创建一个原始字符串,何时使用它,以及什么是无效的原始字符串。本教程就到此为止。