如何在Python中删除中文标点符号

时间:2016-04-15 07:15:42

标签: python chinese-locale

我有以下句子,我想删除所有标点符号。

首页 » 政策法规 » 正文吉林省实施《中华人民共和国老年人权益保障法》若干规定   发布时间: 2008-01-04              

我想删除所有中文标点符号,包括空格“”。以下是我的代码:

line = line.decode("utf8")
line = re.sub("[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*():;《)《》“”()»〔〕-]+".decode("utf8"), "".decode("utf8"),line)

但是,我仍然没有删除空白空间。我想知道是否有更简单的方法来删除中文标点符号?

2 个答案:

答案 0 :(得分:0)

因为大多数中文标点符号为 unicode ,我们必须将字符串转换为 unicode 才能删除中文标点符号。

# !/usr/bin/env python2
# -*- coding:utf-8 -*-  


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

答案 1 :(得分:-1)

re.sub是sub(pattern, repl, string, count=0, flags=0)

作为您的代码,pattern是unicode,repl也是unicode(实际上,不需要解码),

但是string是utf-8编码的字符串,而不是 unicode

试试这个,

print re.sub(ur"[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*():;《)《》“”()»〔〕-]+", "", s.decode("utf8"))