上文有提到,今天我们来谈一谈字符串(string)的最后一个问题:原生字符串'r'。
1
原生字符串'r'
Python中字符串前面加上 r 表示原生字符串,与大多数编程语言相同,正则表达式里使用”\”作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符”\”,那么使用编程语言表示的正则表达式里将需要4个反斜杠”\”:前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。
案例展示
importre
a='China_net809Chinna2008Beijing'
b=re.findall(r'\dBeijing',a)
print(b)
输出结果:
Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r”\”表示。同样,匹配一个数字的”\d”可以写成r”\d”。有了原生字符串,再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。
假如在代码中,我们使用的字符串是一个路径,有可能会出现下面这种情形。
path='D:\new_file'
print(path)
这段代码运行之后,结果如下:
new_file文件夹被剃了‘头’,哈哈,为啥出现这种情况呢。罪魁祸首是在路径的字符串中,包含了“\n”这玩意它是一个换行符。关乎换行符之前也提到过。这里不做过多赘述。只要再加入一个“\”。
path='D:\\new_file'
print(path)
上面这段代码的运行结果就正常了。
由此可见,“\”是转义字符,它能够将第2个“\”从转义字符转回普通字符,从而“\n”就不再起到换行符的作用。
但是遇到下方这个路径,看起来就会有些麻烦!
path='D:\new_file\world\net\header\data'
如果想正常使用这个路径,我们需要加上多个“\”。
path='D:\\new_file\\world\\net\\header\\data'
实际上,这样的路径我们可以将它转换为原始字符串,转换方法是在字符串之前写一个“r”。
path=r'D:\new_file\world\net\header\data'
print(path)
上面这段代码的运行结果显示:
这样,我们就无须添加多个“\”,也能够正常使用这个路径。
不过,有的时候,我们使用的路径需要是“\”结尾。例如:path=D:\new_file\world\net\header\data\
这时要注意,原始字符串不能以“\”结尾,否则会抛出异常。另外,也不能通过转义字符转换最后的“\”,程序会在路径末尾原样输出两个“\”。
示例代码:(错误示例)
path='D:\new_file\world\net\header\data\'
print(path)
输出结果提示异常:
path=r'D:\new_file\world\net\header\data\\'
print(path)
输出结果提示:末尾保持原样
当我们遇到这种需求时,我们需要对末尾的“\”单独进行转义处理,并和前面的字符串连接。
示例代码:(正确示例)
path=r'D:\new_file\world\net\header\data''\\'
print(path)
上面的代码,大家可以看到是两部分字符串并排在一起,这种书写方法是符合规则的,程序会自动把多个并列的字符串连接到一起。
输出结果,正常显示:
最后再来看一个案例:
name='圣天'
sense=name+'是' '一个' '很帅很帅的' '大帅哥''!'
print(sense)
输出结果,正常显示:
领取专属 10元无门槛券
私享最新 技术干货