最近开始学机器学习,学习分析垃圾邮件,其中有一部分是要求去除一段字符中的标点符号,查了一下,网上的大多很复杂例如这样

import re

temp = "司法局让我和户 1 5. 8 0. !!?? 客户维护户外"

temp = temp.decode("utf8")

string = re.sub("[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+".decode("utf8"), "".decode("utf8"),temp)

print string

或者是这样的

'''引入string模块'''

import string

'''使用标点符号常量'''

string.punctuation

text = "*/@》--【】--12()测试*()"

'''去除字符串中所有的字符,可增加自定义字符'''

def strclear(text,newsign=''):

import string # 引入string模块

signtext = string.punctuation + newsign # 引入英文符号常量,可附加自定义字符,默认为空

signrepl = '@'*len(signtext) # 引入符号列表长度的替换字符

signtable = str.maketrans(signtext,signrepl) # 生成替换字符表

return text.translate(signtable).replace('@','') # 最后将替换字符替换为空即可

strclear(text,'》【】')

我一开始用的后面的这个,着实是有点暴力,于是找了查了一下原文档,发现python3中完全有更好的方法去实现这样的功能(似乎是新更新的?不太清楚,我的是python最新版本3.6.6)

和上面的方法一样是利用的是str的translate()和maketrans()

translate()自然不用说这里的重点是maketrans(),先放上官方的文档

static str.maketrans(x[, y[, z]])

This static method returns a translation table usable for str.translate().

If there is only one argument,

it must be a dictionary mapping Unicode ordinals (integers) or characters (strings of length 1) to Unicode ordinals,

strings (of arbitrary lengths) or None. Character keys will then be converted to ordinals.

If there are two arguments,

they must be strings of equal length,

and in the resulting dictionary,

each character in x will be mapped to the character at the same position in y.

If there is a third argument, it must be a string, whose characters will be mapped to None in the result.

可以看出maketrans是可以放三个参数的(以前一直以为只有两个....)

前两个参数是需要一一对应进行替换,需要字符串长度相同

第三个参数是直接替换为None

这里就直接上代码了

import string

i = 'Hello, how are you!'

i.translate(str.maketrans('', '', string.punctuation))

>>>'Hello how are you'

i = 'hello world i am li'

i.translate(str.maketrans('','','l'))

>>>'heo word i am i'

这里的string.punctuation 是python内置的标点符号的合集

既然看到了就总结下

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python删除指定字符_python删除字符串中指定字符的方法相关推荐

  1. 关于VS2017调试时,字符数组显示字符串中的字符无效问题

    关于VS2017调试时,字符数组显示"字符串中的字符无效"问题 1.如果已经分配过内存,可能是越界导致的指令错误. 2.可能是字符数组成员的值超出了ASCII码表示范围,导致字符无 ...

  2. python查找指定字符所在行号_python查找字符串中某个字符

    本文收集整理关于python查找字符串中某个字符的相关议题,使用内容导航快速到达. 内容导航: Q1:Python里统计一个字符串中另一个字符串的个数 答案为3(用正则):1234>>&g ...

  3. python中替换字符串中字符_python替换字符串中的某个字符

    python_split_strip_replace使用方法 使用python时会经常要对字符串做一些处理,比如:分割字符串.去掉空格.替换字符串 中的某个字符等,下面介绍下这几个功能的使用. 一.  ...

  4. python判断字符串里的字符_Python检测字符串中是否包含某字符集合中的字符

    目的 检测字符串中是否包含某字符集合中的字符 方法 最简洁的方法如下,清晰,通用,快速,适用于任何序列和容器 def containAny(seq,aset): for c in seq: if c ...

  5. python统计字符出现的次数最多的字符_Python统计字符串中出现次数最多的人名

    人名最多数统计 题目摘自https://python123.io 描述 编程模板中给出了一个字符串,其中包含了含有重复的人名,请直接输出出现最多的人名.‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬ ...

  6. python提取矩阵元素_python获取array中指定元素的示例

    python获取array中指定元素的示例 对于array,如2-D的array,如何取指定元素 设array为3*10的shape s = array([[ 0, 1, 2, 3, 4, 5, 6, ...

  7. python读取word指定内容_python读取word 中指定位置的表格及表格数据

    1.Word文档如下: 2.代码 # -*- coding: UTF-8 -*- from docx import Document def readSpecTable(filename, specT ...

  8. python人名最多统计_Python统计字符串中出现次数最多的人名

    人名最多数统计 题目摘自https://python123.io 描述 编程模板中给出了一个字符串,其中包含了含有重复的人名,请直接输出出现最多的人名.‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬ ...

  9. java遍历字符串字符_Java 遍历字符串中所有字符的最快方法

    小编典典 在我的AMDx64 8core和源1.8上,使用'charAt'和字段访问之间没有区别.看来jvm已经过充分优化,可以内联和精简任何'string.charAt(n)'调用. 这完全取决于S ...

  10. python跨行字符串 变量_在Python中有没有在多行字符串中使用变量的方法?

    所以我把这个作为邮件发送脚本的一部分:try: content = ("""From: Fromname To: Toname MIME-Version: 1.0 Con ...

最新文章

  1. 简单天气应用开发——基本功能完成
  2. 大规模数据处理的演化历程(2003-2018)
  3. 如何从Silverlight 代码调用Javascript 函数
  4. 反编译android的apk
  5. 12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件不记录日志和过期时间
  6. saiav.win forum.php,【emWin实战教程V2.0】第4章    emWin5.xx的裸机方式移植(F4
  7. java栈存储_【转载】Java中的数据存储(堆、栈、常量池)
  8. 4.1邮箱的全选,全不选,反选
  9. js文件处理File
  10. 提高篇 第四部分 数据结构 第2章 RMQ问题
  11. ipfs操作mysql_IPFS 使用入门
  12. while 循环判断时 遇到赋值表达式
  13. IP65防水步进电机可以在什么环境使用?
  14. html表格填充渐变颜色代码,CSS控制图片、表格、背景颜色渐变示例
  15. Face3D学习笔记(4)3DMM示例源码解析【中上】3DMM模型
  16. usb网卡android驱动+win7,USB无线网卡万能驱动下载
  17. 微信的9个隐藏功能,我不允许还有人不知道!
  18. 学习RPA-电商自动化入门①
  19. python re sub用法_python re模块常见使用方法整理
  20. VS2022怎么取消背景或者删除主题

热门文章

  1. UVA516 POJ1365 LA5533 ZOJ1261 Prime Land【欧拉筛法】
  2. 51Nod-1083 矩阵取数问题【DP】
  3. Ubuntu下BOINC服务器安装(step8失败)
  4. HDU1164 Eddy's research I(解法二)【废除!!!】
  5. Python 标准库和第三方库的安装位置、Python 第三方库安装的各种问题及解决
  6. 3C(Computer、Communication、Consumer Electronic)
  7. 源码之前,了无秘密(一)——iterator adapter
  8. Linux 命令源码 —— cat
  9. C++设计模式::装饰模式or代理模式or面向切片编程(AOP)
  10. python文件重命名加日期_Python文件创建日期和重命名 - 批评请求