python - Python如何解释字符串中的反斜杠?

标签 python

<分区>

虽然我注意到了这个模式,但理论上反斜杠在字符串中是如何工作的?

'@#2_#]&*^%$\]'

输出:'@#2_#]&*^%$\\]'

'@#2_#]&*^%$\\]'

输出:'@#2_#]&*^%$\\]'

'@#2_#]&*^%$\\\]'

输出:'@#2_#]&*^%$\\\\]'

最佳答案

反斜杠\字符用于转义其他具有特殊含义的字符,例如换行符、反斜杠本身或引号字符。字符串文字可以选择以字母“r”或“R”为前缀;这样的字符串称为原始字符串,并且对反斜杠转义序列使用不同的规则。

除非存在“r”或“R”前缀,否则字符串中的转义序列将根据类似于标准 C 使用的规则进行解释。

为了与标准 C 严格兼容,最多接受三个八进制数字,但不限数量的十六进制数字被视为十六进制转义的一部分(然后所得十六进制数字的低 8 位用于 8位实现)。

与标准 C 不同,所有无法识别的转义序列都保留在字符串中不变,即反斜杠保留在字符串中。 (此行为在调试时很有用:如果转义序列输入错误,则结果输出更容易被识别为损坏。)

当出现 'r' 或 'R' 前缀时,反斜杠仍用于引用后面的字符,但所有反斜杠都保留在字符串中。例如,字符串文字 r"\n"由两个字符组成:一个反斜杠和一个小写的“n”。字符串引号可以用反斜杠转义,但反斜杠保留在字符串中;例如,r"\""是由两个字符组成的有效字符串文字:反斜杠和双引号;r"\"不是值字符串文字(即使是原始字符串也不能以奇数个反斜杠结尾)。具体来说,原始字符串不能以单个反斜杠结尾(因为反斜杠会转义后面的引号字符)。另请注意,单个反斜杠后跟换行符被解释为这两个字符作为字符串的一部分,而不是行继续.

关于python - Python如何解释字符串中的反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58254234/

相关文章:

python - 使用多个条件从 pandas 数据框中选择值

python - 如何在 Python 中测试对象的类型?

python - npm 错误!吉普 错误!堆栈错误: Could not find any Visual Studio installation to use

python - 为什么heroku local :run wants to use the global python installation instead of the currently activated virtual env?

python - Pandas 数据框类型 datetime64[ns] 在 Hive/Athena 中不起作用

python - 搜索 Django 数据库,包括 ManyToManyField

Python argparse 使用 switch 来运行 if 语句

python - 调整迭代器使其行为类似于 Python 中的类文件对象

python - 生成 Pandas 中排名最高的值的列

python - 从 crontab 运行时,subprocess.popen 似乎失败