【Python】去除字符串中标点符号的多种方法 您所在的位置:网站首页 删除字符串中再次出现的字母 【Python】去除字符串中标点符号的多种方法

【Python】去除字符串中标点符号的多种方法

2024-04-07 13:09| 来源: 网络整理| 查看: 265

一、问题背景

  由于最近做nlp相关的项目,在进行数据预处理的时候,需要对文本进行分词、去停用词、词性标注、标点去除等预处理方法。   由于标点符号会影响我们分词的效果,这里我着重了解学习了标点去除的方法,总结了有以下几种,欢迎大家补充👏

二、解决方案

以下描述了4种方法:

import re import string sentence = "+今天=是!2021! 年/8月?1,7日★.---《七夕节@》:让我*们出门(#@)去“感受”夏天的荷尔蒙!" sentenceClean = [] # method 1 remove_chars = '[·’!"\#$%&\'()#!()*+,-./:;?\@,:?¥★、….>【】[]《》?“”‘’\[\\]^_`{|}~]+' string1 = re.sub(remove_chars, "", sentence) sentenceClean.append(string1) # method 2 punct = str.maketrans({key:"" for key in string.punctuation}) # 这里的string中包含的标点符号不是很全 # string.punctuation = !"#$%&'()*+,-./:;?@[\]^_`{|}~ 都是英文字符下的标点 string2 = sentence.translate(punct) sentenceClean.append(string2) # method 3 string3 = "".join(re.findall(r'\b\w+\b',sentence)) # 正则表达式中\b可以简单理解为单词的边界(指的是字母数字和非字母数字的边界),\w表示字母数字下划线, #'\b\w+\b'在这道题中就能做到匹配一个单词,re.findall是将全部的单词找出来 sentenceClean.append(string3) # method 4 string4 = re.sub('\W*', '', sentence) # 把非单词字符全部替换为空,恰好与\w相反 sentenceClean.append(string4) print(sentence) print(sentenceClean) ''' 以下的结果有一些细微的差别,可以自行对比查找下原因。 result: +今天=是!2021! 年/8月?1,7日★.---《七夕节@》:让我*们出门(#@)去“感受”夏天的荷尔蒙! ['今天是2021 年8月17日七夕节让我们出门去感受夏天的荷尔蒙', '今天是!2021 年8月17日★《七夕节》:让我们出门()去“感受”夏天的荷尔蒙!', '今天是2021年8月17日七夕节让我们出门去感受夏天的荷尔蒙', '今天是2021年8月17日七夕节让我们出门去感受夏天的荷尔蒙'] '''

如果只是简单的个别标点的替换,可以使用replace的内置函数进行替换,例如s.replace(’,’, “”)。

以上的几种方法主要是分成了三种类型

string库函数;正则查找;replace内置函数。

  有兴趣的同学可以对比一下三类方法的效率,在大量文本数据需要处理的时候,这是必须考虑的一个问题。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有