美文网首页生活不易 我用pythonPython精选
Python-字符串前的“r”和字符串中的“\”配合使用时的一个

Python-字符串前的“r”和字符串中的“\”配合使用时的一个

作者: 无聊的IT | 来源:发表于2016-10-25 11:33 被阅读1011次

反斜线“\”符号在Python中有什么特别

在Python中,反斜线“\”符号代表转义符,在实际使用过程中要求\后面必须配合其他字符使用以达到特别的含义或功能。比如:

>>> print 'ab\ncd'
ab
cd

此处的\n代表的换行符,当然还有其他用法,比如\t、\v……

如何在字符串中表达反斜线本身?

答案是使用两个反斜线,即\。第一个反斜线取消另一个反斜线的转义。比如:

>>> print 'ab\\cd'
ab\cd

所以作为转义符使用时,反斜线“\”后面必须本配合其他字符一起使用,或两个反斜线成对使用。

还有另外一种方法是在字符串前加“r”,比如:

>>> print r'ab\cd'
ab\cd

当字符串前面加上字符“r”时,会取消对字符串中反斜线“\”的转义。

坑来了

>>> print r'\'
  File "<stdin>", line 1
    print r'\'
             ^
SyntaxError: EOL while scanning string literal

或者我们表示Windows中的路径,比如:

>>> print r'c:\windows\'
  File "<stdin>", line 1
    print r'c:\windows\'
                       ^
SyntaxError: EOL while scanning string literal

这儿报错了,报错信息是“EOL while scanning string literal”(检测到非法的结束符)。试试看去掉字符串最后面的反斜线看看:

>>> print r'c:\windows'
c:\windows

成功执行。

原因分析

很显然,即使字符串前面加上了字符“r”,如果字符串尾部是反斜线“\”时,Python仍旧会将此反斜线“\”当成转义符对待,当成转义符时就要求反斜线“\”后面必须要带上其他字符或是两个反斜线“\”配合使用(很显然,此处最后的反斜线“\”把作为字符串定界符的单引号给转义成普通的字符了,导致其失去了定界符的作用。)。可是如果处于最末的反斜线“\”配合其他字符或是两个反斜线“\”配合使用,又与字符串前面的字符“r”的取消转义的功能之间产生冲突,如:

>>> print r'c:\windows\\'
c:\windows\\

总结

所以在实际使用过程中如果要使用字符串前缀“r”,要避免字符串最后一个字符是反斜线“\”。如果字符串最后一个字符一定要是反斜线“\”,可以使用\\的方式来处理。

在发现此问题并查找原因时得到了“Crossin的编程教程4班”QQ群中的“梦在远方”的提醒与帮助,在此表示感谢。

相关文章

  • Python-字符串前的“r”和字符串中的“\”配合使用时的一个

    反斜线“\”符号在Python中有什么特别 在Python中,反斜线“\”符号代表转义符,在实际使用过程中要求\后...

  • 2018-09-28字符串

    字符串中的元素 1.阻止转义:r R 在字符串前面加"r""R"来阻止字符串中的转义符来转义。 2.pyth...

  • 2021-03-05 flutter 字符串

    flutter字符串字面量 1,r'字符串'在字符串 前加‘r’实现创建原始字符串,不会被转义,直接输出原始定义的...

  • Day73: 分割平衡字符串

    Day73: 分割平衡字符串 在一个「平衡字符串」中,'L' 和 'R' 字符的数量是相同的。 给出一个平衡字符串...

  • python入门 之小笔记

    1.字符串中包含多个转义字符的时候 多行字符串前面添加r,把这个多行字符串也变成一个raw字符串 r'''Pyth...

  • day-4(字符串总结)

    字符串 一.字符串的元素 1.1阻止转义 在字符串的最后可以添加r/R来阻止字符串中的转义字符串转义。 例如 2....

  • day4_字符串

    1.字符串中的元素 1.1阻止转义   在字符串的最前面加r/R来阻止字符串中的转义字符转义 1.2获取字符串中的...

  • LeetCode刷题之字符串

    1221. 分割平衡字符串 在一个「平衡字符串」中,'L' 和 'R' 字符的数量是相同的。给出一个平衡字符串 s...

  • LeetCode题解之分割平衡字符串

    分割平衡字符串 题目描述 在一个「平衡字符串」中,'L' 和 'R' 字符的数量是相同的。 给出一个平衡字符串 s...

  • Day4总结

    1.阻止转义 在字符串的最前面可以添加r/R来阻止字符串中的转义字符转义 2.python中可以把字符串看成是一个...

网友评论

    本文标题:Python-字符串前的“r”和字符串中的“\”配合使用时的一个

    本文链接:https://www.haomeiwen.com/subject/jsjruttx.html