时间:2021-05-22
中文文本中可能出现的标点符号来源比较复杂,通过匹配等手段对他们处理的时候需要格外小心,防止遗漏。以下为在下处理中文标点的时候采用的两种方法:
中文标点集合
比较常见标点有这些:
!?。"#$%&'()*+,-/:;<=>@[\]^_`{|}~⦅⦆「」、、〃》「」『』【】〔〕〖〗〘〙〚〛〜〝〞〟〰〾〿–—‘'‛“”„‟…‧﹏.调用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汉字的范围为”\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处理中文标点符号大集合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
php过滤英文标点符号过滤中文标点符号代码复制代码代码如下:functionfilter_mark($text){if(trim($text)=='')retu
很多时候我们需要过滤掉标点符号等特殊字符,网上虽然有一堆的方法,但是都没有找到一个非常满意的,有些过滤不了中文的标点符号,有些过滤不了英文的标点符号,有些过滤不
word标点符号在插入符号里面,在输入法里面,按右键里面也有标点符号。MicrosoftOfficeWord是微软公司的一个收费文字处理应用程序,是最流行的文字
核心技术:Python3.7GUI技术:Tkinter(Python已经内置)好多文章写PythonGUI之tkinter窗口视窗教程大集合(看这篇就够了)我看
元字符^$.*+?=!:|\/()[]{}在使用这些符号时需要用“\”来进行转移。如果记不清楚那些标点符号需要转移,可以在使用标点符号时都使用反斜杠“\”简单匹