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

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

本文介绍在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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。