今天爬虫(新浪微博 个人信息页面)的时候遇到了转义和正则匹配中文出乱码的问题。
先给出要匹配的部分网页源代码如下:
昵称:他们叫我远凸哥哥\r\n\t\t
想要匹配得到的结果是这个人的昵称,即“他们叫我远凸哥哥”
1.转义
比较简单,需要转义的是反斜杠(\)和引号(")
1 >>> content='昵称:他们叫我远凸哥哥\\r\\n\\t\\t'
2 >>> printcontent3 昵称:他们叫我远凸哥哥\r\n\t\t
2. 匹配中文乱码的问题
问题如下:
1 >>> re.findall(r'(?<=昵称:).*?(?=)',content)2 ['\xcb\xfb\xc3\xc7\xbd\xd0\xce\xd2\xd4\xb6\xcd\xb9\xb8\xe7\xb8\xe7']
百度和google了一下,知道了大概思路就是要decode('utf8')。有说pattern要写成u'pattern'的,不过我试了好像没什么用,不知道是不是我用的2.X版本。最后解决办法如下:
1 #! /usr/bin/env python
2 #coding=utf8
3
4 importre5 content6='昵称:他们叫我远凸哥哥\\r\\n\\t\\t'
6 b=re.findall(r'(?<=昵称:).*?(?=)',content6)7 print b[0].decode('utf8')8 他们叫我远凸哥哥
不知道大家有什么更好的写法,网上的写法试了好几种,我这里都是不行的。