Python2.7 转义和正则匹配中文
今天爬虫(新浪微博 个人信息页面)的时候遇到了转义和正则匹配中文出乱码的问题。
先给出要匹配的部分网页源代码如下:
<span class=\"pt_title S_txt2\">昵称:<\/span><span class=\"pt_detail\">他们叫我远凸哥哥<\/span><\/li>\r\n\t\t
想要匹配得到的结果是这个人的昵称,即“他们叫我远凸哥哥”
1.转义
比较简单,需要转义的是反斜杠(\)和引号(")
>>> content='<span class=\\\"pt_title S_txt2\\\">昵称:<\\/span><span class=\\\"pt_detail\\\">他们叫我远凸哥哥<\\/span><\\/li>\\r\\n\\t\\t'
>>> print content
<span class=\"pt_title S_txt2\">昵称:<\/span><span class=\"pt_detail\">他们叫我远凸哥哥<\/span><\/li>\r\n\t\t
2. 匹配中文乱码的问题
问题如下:
>>> re.findall(r'(?<=昵称:<\\/span><span class=\\\"pt_detail\\\">).*?(?=<\\/span>)',content)
['\xcb\xfb\xc3\xc7\xbd\xd0\xce\xd2\xd4\xb6\xcd\xb9\xb8\xe7\xb8\xe7']
百度和google了一下,知道了大概思路就是要decode('utf8')。有说pattern要写成u'pattern'的,不过我试了好像没什么用,不知道是不是我用的2.X版本。最后解决办法如下:
#! /usr/bin/env python
#coding=utf8 import re
content6='<span class=\\\"pt_title S_txt2\\\">昵称:<\\/span><span class=\\\"pt_detail\\\">他们叫我远凸哥哥<\\/span><\\/li>\\r\\n\\t\\t'
b=re.findall(r'(?<=昵称:<\\/span><span class=\\\"pt_detail\\\">).*?(?=<\\/span>)',content6)
print b[0].decode('utf8')
他们叫我远凸哥哥
不知道大家有什么更好的写法,网上的写法试了好几种,我这里都是不行的。
Python2.7 转义和正则匹配中文的更多相关文章
- php 使用正则匹配中文 返回结果
$str = 'eg5455正则匹配中文123三国杀'; $patten='/[\x{4e00}-\x{9fa5}]+/u'; $a = preg_match($patten, $str, $mn); ...
- python正则匹配——中文字符的匹配
# -*- coding:utf-8 -*- import re '''python 3.5版本 正则匹配中文,固定形式:\u4E00-\u9FA5 ''' words = 'study in 山海大 ...
- JavaScript 正则匹配中文,中文符号,空格,全数字,以https:// 开头的url,用于各种场景的输入校验
业务场景1: 密码输入框需要验证输入中文,中文符号,空格等情况,以便于给出错误提示 业务场景2: 输入框只允许输入数字的情况 业务场景3: 输入框允许输入均为数字或以https:// 开头的url的情 ...
- php 正则匹配中文(转)
我使用正则表达式来匹配中问的时候,出现了无法匹配的问题,问题如下 PCRE does not support \L, \l, \N{name}, \U, or \u at offset 2 我原来的匹 ...
- php 正则匹配中文
在javascript中,要判断字符串是中文是很简单的.比如:var str = "php编程";if (/^[\u4e00-\u9fa5]+$/.test(str)) {aler ...
- python 正则匹配中文(unicode)(转)
由于 需求原因,需要匹配 提取中文,大量google下,并没有我需要的.花了一个小时大概测试,此utf8中文通过,特留文. 参考: http://hi.baidu.com/nivrrex/blo ...
- mysql正则匹配中文时存在的问题
可以看到,目前正则匹配字母没问题,c出现1次,2次,3次匹配的结果都是正常的 接下来我们看看匹配中文的效果 可以看到,当匹配连续出现歪时,结果就开始不正常了 然后我去看了下mysql的中文文档中关于正 ...
- 正则匹配中文 UTF-8 & GBK
在php 中: //GB2312汉字字母数字下划线正则表达式 GBK: preg_match("/^[".chr(0xa1)."-".chr(0xff).&qu ...
- php正则匹配中文
<?php $str = '你是我的+****xiaopingguo _ 23947237 _+冠军终归这里'; preg_match_all('/[\x{4e00}-\x{9fa5}A-Za- ...
随机推荐
- 基于VMware的eCos环境编译redboot(脚本配置redboot)
基于VMware的ecos,redboot及hello world(1)安装请参照[[ecos学习2]wmware运行redboot[方法二]--图形实现配置 ] (2)修改内存布局文件:~/i386 ...
- 磁盘管理二-LVM相关内容
1.基本概念 LVM:logical volume manager 逻辑卷管理器 LVM构成:物理卷PV,卷组VG(PE物理区域,最小存储单元),逻辑卷LV(LE逻辑区域,最小存储单元) 三者如下图所 ...
- SQL查询 addScalar()或addEntity()
Hibernate除了支持HQL查询外,还支持原生SQL查询. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.该 ...
- LUN----逻辑单元号
LUN的全称是Logical Unit Number,也就是逻辑单元号. 一.概念 LUN的全称是Logical Unit Number,也就是逻辑单元号.我们知道SCSI总线上可挂接的设备数 ...
- BufferedStream类 - 缓冲流
BufferedStream常用于对其他流的一个封装,它必须和其他流结合一起使用.MemoryStream将所有的内容都放入内存中,而BufferedStream不是.BufferedStream在基 ...
- 弄明白Android 接口回调机制
以前对于这个机制理解不够深刻,现在重新整理下思路. 一.建模 我理解的接口回调就是,我这个类实现了一个接口里的方法doSomething,然后注册到你这里,然后我就去做别的事情去了,你在某个触发的时机 ...
- 在javascript中使用com组件的方法
转载自: http://dhailin.blog.163.com/blog/static/230738322011128102043880/ 首先创建一个COM组件,插入一个双接口Itest,在此接 ...
- js跳转页面代码用法
一:window.location.href='https://www.baidu.com'; 需要加上http或者https,否则会查找项目内htm打开. 二:window.history.bac ...
- hdu 5495 LCS
Problem Description You are given two sequence {a1,a2,...,an} and {b1,b2,...,bn}. Both sequences are ...
- 也谈---基于 HTTP 长连接的“服务(转载)
这里指讨论基于HTTP的推技术, 诸如flash,applet之类的东西不作分析, 他们就不能说是"纯粹"的浏览器应用了. 首先是一点背景知识, 大家都知道长连接避免了tcp连接的 ...