Python有一个ConfigParser模块可以读取解析配置文件,今天找了一些代码研究了一下,发现一个问题,这里记录一下。
配置文件内容
[global]
reList= /图书/[\u4e00-\u9fa5]+/\d+.html
上面是一条匹配网址中包含中文字符的正则表达式。
下面看一下主程序:
reList = u”/图书/[\u4e00-\u9fa5]+/\d+.html”
print “%r” % reList
reList = cnf.get(“global”,”reList”).decode(“utf8”)
print “%r” % reList
输入为:
u’/\u56fe\u4e66/[\u4e00-\u9fa5]+/\\d+.html’
u’/\u56fe\u4e66/[\\u4e00-\\u9fa5]+/\\d+.html’
第一条的正则可以正常匹配,第二条失败。原因就是读取配置文件的时候,解释器自动在反斜杠\前又加了一个反斜杠。这里可以看出,直接为变量作字符串赋值时,utf8编码的反斜杠并没有被转义。
解决方法:
修改配置文件
把配置文件中的utf8编码替换为对应的汉字。
\u4e00对应”一”
\u9fa5对应”龥(yù)”
reList = /图书/[一-龥]+/\d+.html