Python处理中文标点符号大集合

夏知夏
夏知夏
发布时间:2026-10-13 | 3人浏览过
原创

本文介绍在Python中处理中文标点符号的多种方法,包括利用zhon库获取标准标点集合、使用正则表达式去除或保留单个标点、通过Unicode范围过滤字符,以及结合translate与split实现多符号分割。内容涵盖半角全角处理及函数封装,适用于文本清洗与自然语言预处理场景。

中文文本中的标点符号来源多样,处理时若仅依赖简单匹配容易遗漏,需谨慎操作。以下介绍两种常用的中文标点处理方案:

中文标点集合

常见的中文标点符号包括:

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

通过调用zhon包的zhon.hanzi.punctuation函数,即可获取上述中文标点列表。

若需处理英文标点,可调用string包的string.punctuation函数,结果如下:

!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~

因此,若需去除所有标点符号,可执行以下操作:

>>> import re
>>> from zhon.hanzo import punctuation
>>> line = "测试。。去除标点。。"
>>> print re.sub("[{}]+".format(punctuation), "", line.decode("utf-8")) # 需要将str转换为unicode

若希望去除重复标点并仅保留一个,可使用\1进行指代,例如:

>>> re.sub(ur"([{}])+".format(punctuation), "\1", line.decode("utf-8"))

也可以手动指定所需的标点符号列表。

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

通过直接指定Unicode码范围的方式,可以实现strip操作,例如:

去除所有半角和全角符号,仅保留字母、数字及中文字符。

def remove_punctuation(line):
  rule = re.compile(ur"[^a-zA-Z0-9\u4e00-\u9fa5]")
  line = rule.sub('',line)
  return line

汉字的Unicode范围是“\u4e00-\u9fa5”,由于涉及Unicode表示,前缀必须为“u”;字符“r”表示原始字符串,忽略后续转义字符,从而简化正则表达式中每个转义字符需单独转义的繁琐操作。

最后,可将上述逻辑组合为一个完整函数。

def remove_punctuation(line, strip_all=True):
  if strip_all:
    rule = re.compile(ur"[^a-zA-Z0-9\u4e00-\u9fa5]")
    line = rule.sub('',line)
  else:
    punctuation = """!?。"#$%&'()*+-/:;<=>@[\]^_`{|}~⦅⦆「」、、〃》「」『』【】〔〕〖〗〘〙〚〛〜〝〞〟〰〾〿–—‘'‛“”„‟…‧﹏"""
    re_punctuation = "[{}]+".format(punctuation)
    line = re.sub(re_punctuation, "", line)
  return line.strip()

清洗完成后,有时需要依据多种标点符号对文本进行分割。

例如,只要遇到中文或英文的逗号、句号等符号即进行分割,可直接利用translate将这些符号统一映射为分隔符,再执行split:

strip_chars = '?"。.,,《》[]〖〗“”'
single_line = single_line.translate(str.maketrans(dict.fromkeys(strip_chars, '#')))
single_line = single_line.split('#')

总结

以上介绍了Python处理中文标点符号的多种方法,希望能为读者提供帮助。如有疑问欢迎留言,小编将及时回复。感谢大家对本站的支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表