Python 本身使用 \ 来转义一些特殊字符,例如在字符串中添加引号时
s = 'i\'m superman'
print(s) # i'm superman
为了防止和字符串本身的引号冲突,使用\转义,一般这样不会造成任何问题,但是当你想用\转义\时,就比较混乱了,比如我们要输出对于一个\,必须写两个\,否则会报语法错误,因为\转义了后面的引号,所以必须使用\。
# 错误写法
# print '\'
# 正确写法
print('\\') # \
# 原生字符串
print(r'\\') # \\
转义 \ 使其不具有转义功能以正确输出。使用原生字符串时,输出显示两个\,好像写了几个输出,如果你这么认为,可以试试看能不能输出奇数个\。
python的原生字符串不能以反斜杠结尾的问题
Python 的原始字符串是一个非常有用的东西,可以写很多反斜杠(转义符号)。
但是它有个著名的bug就是不能以反斜杠结尾,让人无语。首先要澄清的不是它不能以反斜杠结尾,而是不能以奇数个反斜杠结尾。
其次,这个bug的原因是一些处理器(比如主要的正则表达式引擎)想要自己做反斜杠转义,这些处理器不允许字符串以不匹配的反斜杠结尾。
最后,解决方案是将反斜杠放在另一个字符串中,Python 会自动进行合并:
dir = r"\this\is\my\dos\dir" "\\"
虽然原生字符串并不完美,但它已经可以帮助我们解决很大一部分问题。例如,当你想匹配“\”时,原生字符串允许你写至少一半的\,这样可以节省代码量,增加可读性。
import re
_string = '\\\\'
print(_string) # \\
# 字符串
for i in re.findall('\\\\', _string):
print(i)
# \
# \
# 原生字符串
for i in re.findall(r'\\', _string):
print(i)
# \
# \
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python变长参数的使用场景12/08
- ♥ 什么是python可迭代对象09/24
- ♥ python如何运行.sh文件08/27
- ♥ python拦截字符串的特定部分08/13
- ♥ 什么是Python中的线程和多线程12/04
- ♥ 如何判断空python字符串?12/02
内容反馈