python-re之中文匹配
2024-09-29 14:23:28
#coding=utf-8
import re
import chardet#检测网页编码形式的模块 p = re.compile(r'\d+')
print p.findall('one1two2three3four4') a="rewfd231321ewq21weqeqw"
p=re.compile(r"(\d+)\D+(\d+)",re.S)
b=p.findall(a)
print b a=u"我爱@糗百,你呢"
print a
b=re.findall (u"(.+?)@糗百(.+)",a,re.S)
print b
for i in b:
for j in i:
print j
结果:
['1', '2', '3', '4']
[('231321', '21')] #findall的结果是[(),()]这种形式的,如果元组只有一个元素,则是["",""]这样子的
我爱@糗百,你呢
[(u'\u6211\u7231', u'\uff0c\u4f60\u5462')]
我爱
,你呢
——————————————————————————————————————————
如果不知道汉字文本的编码,比如说是一段网上爬来的文字(通常情况下就是不知道的)
import re
import chardet#检测网页编码形式的模块 a="我爱@糗百,你呢"
if isinstance(a, unicode) :
pass
else:
codesty=chardet.detect(a)
a=a.decode(codesty['encoding'])
print a
b=re.findall (u"(.+?)@糗百(.+)",a,re.S)
print b
for i in b:
for j in i:
print j
则利用chardet这个模块得到它的编码,并将其转化为unicode
结果:
我爱@糗百,你呢
[(u'\u6211\u7231', u'\uff0c\u4f60\u5462')]
我爱
,你呢
当然,如果想双击,py在windows下演示,得到的字符串应该再加j.encode("GBK")
注意:处理中文前要将其转化为unicode,不要ascii码直接正则匹配,ascII码如何转Unicode?遇到再说吧~
最新文章
- SiteMesh3整合SpringMVC+FreeMarker
- crontab 基本用法
- Long型整数,缄默溢出
- 什么是IP地址、子网掩码、路由和网关
- sersync+inotify实时备份数据
- windows10 使用gitblit搭建git服务器
- 关于CSS的table-layout属性的用法详解
- c字符数组
- Android中典型的ROOT原理(5)
- MySQL之库相关操作
- CentOS7用yum快速搭建LAMP平台
- 百练6376-二维数组右上左下遍历-2015正式C题
- mysql设置外键约束开启-关闭
- winform 之控件ListView
- C#在Winform程序中显示QQ在线状态
- springboot static方法与构造方法加载@VALUE
- 如何拷贝一个wchar_t类型的字符串
- C# 算法题系列(一) 两数之和、无重复字符的最长子串
- if...else if...else和switch语句的注意点
- link 和 import 导入外部样式的区别
热门文章
- Jane Austen【简·奥斯汀】
- Codeforces Round #461 (Div. 2) A. Cloning Toys
- [USACO]奶牛抗议(DP+树状数组+离散化)
- 在F12 控制台输入,可执行jquery操作
- jQuery+Asp.net 实现简单的下拉加载更多功能
- 通过js date对象获取各种开始结束日期的示例
- 聊聊、Java 命令 第一篇
- 文本处理grep命令
- Android数据储存之File
- 浅谈JavaScript中的函数问题