python删除列表中字符串_python - 删除字符串中的字符列表
如果您正在使用python2并且您的输入是字符串(不是unicodes),那么绝对最好的方法是remove_chars_translate_bytes:
>>> chars_to_remove = ['.', '!', '?']
>>> subj = 'A.B!C?'
>>> subj.translate(None, ''.join(chars_to_remove))
'ABC'
否则,有以下选项可供考虑:
A.通过char迭代主题char,省略不需要的字符和结果列表remove_chars_translate_bytes:
>>> sc = set(chars_to_remove)
>>> ''.join([c for c in subj if c not in sc])
'ABC'
(请注意,生成器版本remove_chars_translate_bytes效率较低)。
B.动态创建正则表达式,并使用空字符串创建remove_chars_translate_bytes:
>>> import re
>>> rx = '[' + re.escape(''.join(chars_to_remove)) + ']'
>>> re.sub(rx, '', subj)
'ABC'
(remove_chars_translate_bytes确保像remove_chars_translate_bytes或]这样的字符不会破坏正则表达式)。
C.使用remove_chars_translate_bytes的映射变体:
>>> chars_to_remove = [u'δ', u'Γ', u'ж']
>>> subj = u'AжBδCΓ'
>>> dd = {ord(c):None for c in chars_to_remove}
>>> subj.translate(dd)
u'ABC'
完整的测试代码和时间:
#coding=utf8
import re
def remove_chars_iter(subj, chars):
sc = set(chars)
return ''.join([c for c in subj if c not in sc])
def remove_chars_re(subj, chars):
return re.sub('[' + re.escape(''.join(chars)) + ']', '', subj)
def remove_chars_re_unicode(subj, chars):
return re.sub(u'(?u)[' + re.escape(''.join(chars)) + ']', '', subj)
def remove_chars_translate_bytes(subj, chars):
return subj.translate(None, ''.join(chars))
def remove_chars_translate_unicode(subj, chars):
d = {ord(c):None for c in chars}
return subj.translate(d)
import timeit, sys
def profile(f):
assert f(subj, chars_to_remove) == test
t = timeit.timeit(lambda: f(subj, chars_to_remove), number=1000)
print ('{0:.3f} {1}'.format(t, f.__name__))
print (sys.version)
PYTHON2 = sys.version_info[0] == 2
print ('\n"plain" string:\n')
chars_to_remove = ['.', '!', '?']
subj = 'A.B!C?' * 1000
test = 'ABC' * 1000
profile(remove_chars_iter)
profile(remove_chars_re)
if PYTHON2:
profile(remove_chars_translate_bytes)
else:
profile(remove_chars_translate_unicode)
print ('\nunicode string:\n')
if PYTHON2:
chars_to_remove = [u'δ', u'Γ', u'ж']
subj = u'AжBδCΓ'
else:
chars_to_remove = ['δ', 'Γ', 'ж']
subj = 'AжBδCΓ'
subj = subj * 1000
test = 'ABC' * 1000
profile(remove_chars_iter)
if PYTHON2:
profile(remove_chars_re_unicode)
else:
profile(remove_chars_re)
profile(remove_chars_translate_unicode)
结果:
2.7.5 (default, Mar 9 2014, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)]
"plain" string:
0.637 remove_chars_iter
0.649 remove_chars_re
0.010 remove_chars_translate_bytes
unicode string:
0.866 remove_chars_iter
0.680 remove_chars_re_unicode
1.373 remove_chars_translate_unicode
---
3.4.2 (v3.4.2:ab2c023a9432, Oct 5 2014, 20:42:22)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
"plain" string:
0.512 remove_chars_iter
0.574 remove_chars_re
0.765 remove_chars_translate_unicode
unicode string:
0.817 remove_chars_iter
0.686 remove_chars_re
0.876 remove_chars_translate_unicode
(作为旁注,remove_chars_translate_bytes的数字可能会给我们一个线索,为什么业界不愿意长期采用Unicode)。
python删除列表中字符串_python - 删除字符串中的字符列表相关推荐
- python中return输出字符串_python基础——字符串
Python 字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello W ...
- python依次输入输出字符串_Python练习:输入一个字符串并输出该字符串中所有字符的组合,python...
题目 输入一个字符串,输出该字符串中字符的所有组合.例如abc,它的组合有a.b.c.ab.ac.bc.abc. 第一种思路 使用递归求解,可以考虑长度为n的字符串中m个字符的组合,设为C(n, m) ...
- python无效的类字符串_Python基础-字符串处理
你好,我是goldsunC 让我们一起进步吧! 字符串操作与处理 字符串是编程语言中经常会遇见的东西,而字符串又和那些编程语句什么的不太一样,我们可能需要对一个字符串进行各种各样的处理,后面我将给出 ...
- 用python倒序输出一个字符串_Python 反转字符串(reverse)的方法小结
前段时间看到letcode上的元音字母字符串反转的题目,今天来研究一下字符串反转的内容.主要有三种方法: 1.切片法(最简洁的一种) #切片法 def reverse1(): s=input(&quo ...
- python删除空值的行_python删除列为空的行的实现方法
python删除列为空的行的实现方法 发布时间:2020-07-17 17:26:54 来源:亿速云 阅读:112 作者:小猪 这篇文章主要讲解了python删除列为空的行的实现方法,内容清晰明了,对 ...
- python字符串_python的字符串怎么拼接
Python字符串拼接数字 在某些特殊场景中,我们需要将字符串与数字进行拼接,而 Python 不允许直接拼接数字和字符串,程序必须先将数字转换成字符串. 为了将数字转换成字符串,可以使用 str() ...
- python利用字典实现大侠_python实现字符串和字典的转换
一.把一个字符串的内容提取出来,并放到字典中 流程如下: 1.得到字符串s,通过分割提取得到s1(是个列表) s="name=lyy&age=3&sex=women& ...
- 以30字符宽居中输出python字符串_python基础--字符串
Python3 字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号(' 或" )来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hell ...
- python删除一列数据_python删除txt第一列数据库
带你读<Python数据分析与数据化运营(第2版)>之一:Python和数据化运营 点击查看第二章点击查看第三章Python数据分析与数据化运营(第2版) 宋天龙 著 第1章 Python ...
- python删除某列数据_python删除txt第一列数据库
带你读<Python数据分析与数据化运营(第2版)>之一:Python和数据化运营 点击查看第二章点击查看第三章Python数据分析与数据化运营(第2版) 宋天龙 著 第1章 Python ...
最新文章
- grub4dos初级教程-入门篇
- [Splay][线段树] jzoj P5662 尺树寸泓
- qt linux 国际化,多语言,配置CLion管理Qt项目国际化支持
- coding4fun比赛总结
- [转载] Python字符串:大写 str.upper()
- nginx优化--突破十万并发
- 一个例子说明数据库union all的作用
- android毕业论文结论,毕业论文经典结束语
- MySQL时区问题(与北京时间相差13小时)-- mybatisplus使用LocalDateTime.now()获取系统当前时间问题
- PMP|项目管理过程中,怎么识别风险?
- stm32h7内存分配_【STM32H7教程】第9章 STM32H7重要知识点数据类型,变量和堆栈...
- php开启sockets模块,php开启php_sockets扩展
- java判断txt文件的编码格式
- 计算机怎样打开鼠标点的键盘,如何打开计算机虚拟键盘?五种打开计算机虚拟键盘的方法简介...
- 北邮803考研经验杂谈
- 可视化项目使用vw/vh布局进行适配
- Linux攻关之基础模块十 特殊权限
- 斐波拉契数列 Java三种实现
- 【面试】2019.7.10京东校招提前批
- taobao.item_sku获取sku详细信息 API接口的调用
热门文章
- csp真题字符串匹配c语言,CCF CSP认证考试历年真题 模板生成系统 C语言实现
- 串口服务器常见异常情况排除方法介绍
- 物联网应用:蓝牙模块在智能门锁中的应用
- android listview 去掉水波纹效果_CocosCreator之分层管理的ListView
- jaVa游戏三国志英杰传,《三国志英杰传》到底是怎样的一款游戏
- icom对讲机写频线定义_小米对讲机Lite体验:小米全新5公里无网络免费通话神器...
- 导数,微分,偏导,全微分,方向导数,梯度
- TP、PHP同域不同子级域名共享Session、单点登录
- [小米OJ] 4. 最长连续数列
- 记录一次Oracle注入绕waf