博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python每日一练0016
阅读量:6480 次
发布时间:2019-06-23

本文共 1363 字,大约阅读时间需要 4 分钟。

问题

你想去掉文本字符串开头,结尾或者中间不想要的字符,比如空白。

解决方案

对于简单的文本替换,我们可以使用[lr]stripreplace

strip() 方法能用于删除开始或结尾的字符。 lstrip()rstrip() 分别从左和从右执行删除操作。 默认情况下,这些方法会去除空白字符,但是你也可以指定其他字符集合。

>>> '   spacious   '.lstrip()'spacious   '>>> 'www.example.com'.lstrip('cmowz.')'example.com'>>> '   spacious   '.rstrip()'   spacious'>>> 'mississippi'.rstrip('ipz')'mississ'>>> '   spacious   '.strip()'spacious'>>> 'www.example.com'.strip('cmowz.')'example'复制代码

如果需要替换或者删除中间的某些字符,可以使用replace方法

>>> 'abc'.replace('b', '')'ac'复制代码

那么对于复杂的替换或者删除操作,比如需要一次替换多个字符,可以使用str.translate(table)方法

这个方法需要传入的table是一个实现了__getitem__()方法的对象(例如dict),其中key必须是unicode编码,value是unicode编码或者字符或者None

mapping = {    ord('1'): 'a',    ord('2'): ord('b'),    ord('3'): None,}str1 = '123'str2 = str1.translate(mapping)print(str2)复制代码

输出为ab

我们也可以使用str.maketrans()来更简单的生成上述的table,比如通过一个key和value都是字符的dict生成一个上述的table

mapping = {    '1': 'a',    '2': ord('b'),    '3': None,}str1 = '123'str2 = str1.translate(str.maketrans(mapping))print(str2)复制代码

输出为ab

也可以通过两个相同长度的字符串创建一个上述的table

mapping = str.maketrans('123', 'abc')str1 = 'ppp123yyy'str2 = str1.translate(mapping)print(str2)pppabcyyy复制代码

讨论

字符串替换和删除的方法有很多,一般来说为了追求效率,我们应该使用最简单的那个方法

比如需要替换或删除头部或者尾部的时候考虑striplstriprstrip

还需要替换或删除中间元素时候再考虑replace

如果遇到更复杂的替换删除操作,或者使用上述方法来做非常麻烦的时候,可以考虑translate方法

当然,当涉及到一些模式的时候,可以使用考虑re模块来处理字符串

来源

Stack Overflow

关注

欢迎关注我的微信公众号:python每日一练

转载地址:http://yjzuo.baihongyu.com/

你可能感兴趣的文章
yii框架常用url地址
查看>>
python3.4学习笔记(十六) windows下面安装easy_install和pip教程
查看>>
MyGUI 解析
查看>>
Linux中的ls命令详细使用
查看>>
graph-tool文档(一)- 快速开始使用Graph-tool - 2.属性映射、图的IO和Price网络
查看>>
GraphicsLab Project之辉光(Glare,Glow)效果 【转】
查看>>
<转>Python: __init__.py 用法
查看>>
Linux Curl命令
查看>>
046 SparlSQL中的函数
查看>>
-27979 LoadRunner 错误27979 找不到请求表单 Action.c(73): Error -27979: Requested form not found...
查看>>
[LeetCode] Minimum Depth of Binary Tree
查看>>
,net运行框架
查看>>
Java 中 Emoji 的正则表达式
查看>>
Mixin Network第一届开发者大赛作品介绍- dodice, diceos和Fox.one luckycoin
查看>>
安卓Glide(4.7.1)使用笔记 01 - 引入项目
查看>>
中金易云:为出版社找到下一本《解忧杂货店》
查看>>
Flex布局
查看>>
Material Design之 AppbarLayout 开发实践总结
查看>>
Flutter之MaterialApp使用详解
查看>>
DataBinding最全使用说明
查看>>