您的位置:首页 > 编程语言 > Python开发

【python2】正则表达式-中文标点

2017-08-27 23:26 267 查看
# -*- coding:utf-8 -*-

import re

#r代表原始符号,不需要进行转义,不然需要加\代表原始符号

#u代表utf8编码   u"[。,!?‘“]+" 和"[,。?]+".decode('utf8') 效果相同

regex = re.compile(ur"[。,!?‘“]")

line = "测试。,。去除标点。,是吗?"

reg = re.compile("[\u3002\uff1b\uff0c\uff1a\u201c\u201d\uff08\uff09\u3001\uff1f\u300a\u300b]")#此句在去除标点方面实验发现未起到作用。

word =[] 

string = re.sub("[,。?]+".decode('utf8'),''.decode('utf8'),line.decode('utf8'))#将line里面的标点用空格代替

print string

print 'regex:',(regex.sub(' ',line.decode('utf8'))) #将line里面的标点用空格代替

word.append(re.split(r"[。,?]+".decode('utf8'),line.decode('utf-8')))

#** 此句的word是一个二维数组,因此并不会以汉字形式显示,可以与下面的wc比较,wc是一维的,会以汉字形式显示

wc=re.split(r"[。,?]+".decode('utf8'),line.decode('utf-8'))

print 'wc:',wc

print len(wc)

for i in range(len(wc)):

        print wc[i]

punc = r"!?。"#$%&'()*+,-/:;<=>@[\]^_`{|}~⦅⦆「」、、〃》「」『』【】〔〕〖〗〘〙〚〛〜〝〞〟〰〾〿–—‘’‛“”„‟…‧﹏."

punc = punc.decode("utf-8")

print re.sub("[%s]+" %punc, ''.decode('utf8'),line.decode('utf8'))

print re.split("[%s]+"%punc,line.decode('utf8'))

# ** split之后变成一个列表形式,汉字在列表中只能以Unicode表示,单拿出来可以以汉字形式显示,可以参见wc

结果:

string: 测试去除标点是吗

regex: 测试   去除标点  是吗 

word: [[u'\u6d4b\u8bd5\u3002\uff0c\u3002\u53bb\u9664\u6807\u70b9\u3002\uff0c\u662f\u5417\uff1f']]

wc: [u'\u6d4b\u8bd5', u'\u53bb\u9664\u6807\u70b9', u'\u662f\u5417', u'']

len(wc): 4

wci: 测试

wci: 去除标点

wci: 是吗

wci: 

resub;: 测试去除标点是吗

[u'\u6d4b\u8bd5', u'\u53bb\u9664\u6807\u70b9', u'\u662f\u5417', u'']
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: