• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python中字符串的处理技巧分享

Python中字符串的处理技巧分享

作者:daisy 字体:[增加 减小] 来源:互联网

daisy 通过本文主要向大家介绍了python字符串处理,python 字符串,python 字符串转数字,python 字符串截取,python 字符串拼接等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一、如何拆分含有多种分隔符的字符串?

实际案例

我们要把某个字符串依据分隔符号拆分不同的字符段,该字符串包含多种不同的分隔符,例如:

s = 'asd;aad|dasd|dasd,sdasd|asd,,Adas|sdasd;Asdasd,d|asd'
</div>

其中<,>,<;>,<|>,<\t>都是分隔符,如何处理?

解决方案

连续使用split()方法,每次处理一种分隔符

# 使用Python2 def mySplit(s,ds): res = [s] for d in ds: t = [] map(lambda x: t.extend(x.split(d)), res) res = t return [x for x in res if x] s = 'asd;aad|dasd|dasd,sdasd|asd,,Adas|sdasd;Asdasd,d|asd' result = mySplit(s, ';,|\t') print(result)
</div>
C:\Users\Administrator>C:\Python\Python27\python.exe E:\python-intensive-training\s2.py ['asd', 'aad', 'dasd', 'dasd', 'sdasd', 'asd', 'Adas', 'sdasd', 'Asdasd', 'd', 'asd']
</div>

使用正则表达式的re.split()方法,一次性拆分字符串

>>> import re >>> re.split('[,;\t|]+','asd;aad|dasd|dasd,sdasd|asd,,Adas|sdasd;Asdasd,d|asd') ['asd', 'aad', 'dasd', 'dasd', 'sdasd', 'asd', 'Adas', 'sdasd', 'Asdasd', 'd', 'asd']
</div>

二、如何判断字符串a是否以字符串b开头或结尾?

实际案例

如某目录有如下文件:

quicksort.c graph.py heap.java install.sh stack.cpp ......
</div>

现在需要给.sh和.py结尾的文件夹上可执行权限

解决方案

使用字符串的startswith()和endswith()方法

>>> import os, stat >>> os.listdir('./') ['heap.java', 'quicksort.c', 'stack.cpp', 'install.sh', 'graph.py'] >>> [name for name in os.listdir('./') if name.endswith(('.sh','.py'))] ['install.sh', 'graph.py'] >>> os.chmod('install.sh', os.stat('install.sh').st_mode | stat.S_IXUSR)
</div>
[root@iZ28i253je0Z t]# ls -l install.sh -rwxr--r-- 1 root root 0 Sep 15 18:13 install.sh
</div>

三、如何调整字符串中文本的格式?

实际案例

某软件的日志文件,其中日期格式为yyy-mm-dd:

2016-09-15 18:27:26 statu unpacked python3-pip:all 2016-09-15 19:27:26 statu half-configured python3-pip:all 2016-09-15 20:27:26 statu installd python3-pip:all 2016-09-15 21:27:26 configure asdasdasdas:all python3-pip:all
</div>

需要把其中日期改为美国日期的格式mm/dd/yyy, 2016-09-15 --> 09/15/2016,要如何处理?

解决方案

使用正则表达式re.sub()方法做字符串替换

利用正则表达式的捕获组,捕获每个部分内容,在替换字符串中各个捕获组的顺序。

>>> log = '2016-09-15 18:27:26 statu unpacked python3-pip:all' >>> import re # 按顺序 >>> re.sub('(\d{4})-(\d{2})-(\d{2})', r'\2/\3/\1' , log) '09/15/2016 18:27:26 statu unpacked python3-pip:all' # 使用正则表达式的分组 >>> re.sub('(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})', r'\g<month>/\g<day>/\g<year>' , log) '09/15/2016 18:27:26 statu unpacked python3-pip:all'
</div>

四、如何将多个小字符串拼接成一个大的字符串?

实际案例

在设计某网络程序时,我们自定义了一个基于UDP的网络协议,按照固定次序向服务器传递一系列参数:

hwDetect: "<0112>" gxDepthBits: "<32>" gxResolution: "<1024x768>" gxRefresh: "<60>" fullAlpha: "<1>" lodDist: "<100.0>" DistCull: "<500.0>"
</div>

在程序中我们将各个参数按次序收集到列表中:

["<0112>","<32>","<1024x768>","<60>","<1>","<100.0>","<500.0>"]
</div>

最终我们要把各个参数拼接成一个数据包进行发送:

"<0112><32><1024x768><60><1><100.0><500.0>"
</div>

解决方案

迭代列表,连续使用'+'操作依次拼接每一个字符串

>>> for n in ["<0112>","<32>","<1024x768>","<60>","<1>","<100.0>","<500.0>"]: ... result += n ... >>> result '<0112><32><1024x768><60><1><100.0><500.0>'
</div>

使用str.join()方法,更加快速的拼接列表中所有字符串

>>> result = ''.join(["<0112>","<32>","<1024x768>","<60>","<1>","<100.0>","<500.0>"]) >>> result '<0112><32><1024x768><60><1><100.0><500.0>'
</div>

如果列表中有数字,可以使用生成器进行转换:

>>> hello = [222,'sd',232,'2e',0.2] >>> ''.join(str(x) for x in hello) '222sd2322e0.2'
</div>

五、如何对字符串进行左, 右, 居中对齐?

实际案例

某个字典中存储了一系列属性值:

{ 'ip':'127.0.0.1', 'blog': 'www.anshengme.com', 'title': 'Hello world', 'port': '80' }
</div>

在程序中,我们想以以下格式将其内容输出,如何处理?

ip : 127.0.0.1 blog : www.anshengme.com title : Hello world port : 80
</div>

解决方案

使用字符串的str.ljust() , str.rjust,str.cente()进行左右居中对齐

>>> info = {'ip':'127.0.0.1','blog': 'www.anshengme.com','title': 'Hello world','port': '80'} # 获取字典中的keys最大长度 >>> max(map(len, info.keys())) 5 >>> w = max(map(len, info.keys())) >>> for k in info: ... print(k.ljust(w), ':',info[k]) ... # 获取到的结果 port : 80 blog : www.anshengme.com ip : 127.0.0.1 title : Hello world
</div>

使用format()方法,传递类似'<20','>20','^20'参数完成同样任务

>>> for k in info: ... print(format(k,'^'+str(w)), ':',info[k]) ... port : 80 blog : www.anshengme.com ip : 127.0.0.1 title : Hello world
</div>

六、如何去掉字符串中不需要的字符?

实际案例

过滤掉用户输入卡后多余的空白字符: anshengm.com@gmail.com

过滤某windows下编辑文本中的'\r': hello word\r\n

去掉文本中的unicode组合符号(音调): ‘ní hǎo, chī fàn'

解决方案

字符串strip() , lstrip(),rstrip()方法去掉字符串两端字符

>>> email = ' anshengm.com@gmail.com ' >>> email.strip() 'anshengm.com@gmail.com' >>> email.lstrip() 'anshengm.com@gmail.com ' >>> email.rstrip() ' anshengm.com@g
  


 

您可能想查找下面的文章:

  • Python 专题三 字符串的基础知识
  • python 截取 取出一部分的字符串方法
  • Python实现字符串格式化的方法小结
  • python数据清洗系列之字符串处理详解
  • Python 基础知识之字符串处理
  • Python 基础知识之字符串处理
  • Python中字符串的修改及传参详解
  • python中异常报错处理方法汇总
  • 简单谈谈Python中的反转字符串问题
  • Python中字符串的处理技巧分享

相关文章

  • Python与Redis的连接教程
  • python装饰器与递归算法详解
  • Python实现压缩与解压gzip大文件的方法
  • Python中使用gzip模块压缩文件的简单教程
  • python操作 hbase 数据的方法
  • Flask框架中密码的加盐哈希加密和验证功能的用法详解
  • Perl中著名的Schwartzian转换问题解决实现
  • 基于wxpython开发的简单gui计算器实例
  • Python3基础之输入和输出实例分析
  • python求解水仙花数的方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python解析xml文件操作实例
    • Python实现备份文件实例
    • Python利用Beautiful Soup模块修改内容方法示例
    • python修改注册表终止360进程实例
    • python求斐波那契数列示例分享
    • 从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
    • Python操作MySQL数据库9个实用实例
    • Python中列表和元组的相关语句和方法讲解
    • Python CSV模块使用实例
    • python批量提取word内信息

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有