这篇文章给大家分享了Python中字符串的处理技巧,包括拆分含有多种分隔符的字符串、判断字符串a是否以字符串b开头或结尾、调整字符串中文本的格式已经将多个小字符串拼接成一个大的字符串等,感兴趣的朋友们可以通过阅读下文来学习。
一、如何拆分含有多种分隔符的字符串?
实际案例
我们要把某个字符串依据分隔符号拆分不同的字符段,该字符串包含多种不同的分隔符,例如:
s = 'asd;aad|dasd|dasd,sdasd|asd,,Adas|sdasd;Asdasd,d|asd'
其中,,,
都是分隔符,如何处理?
解决方案
连续使用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)
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']
使用正则表达式的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']
二、如何判断字符串a是否以字符串b开头或结尾?
实际案例
如某目录有如下文件:
quicksort.c graph.py heap.java install.sh stack.cpp ......
现在需要给.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)
[root@iZ28i253je0Z t]# ls -l install.sh -rwxr--r-- 1 root root 0 Sep 15 18:13 install.sh
三、如何调整字符串中文本的格式?
实际案例
某软件的日志文件,其中日期格式为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
需要把其中日期改为美国日期的格式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'
四、如何将多个小字符串拼接成一个大的字符串?
实际案例
在设计某网络程序时,我们自定义了一个基于UDP的网络协议,按照固定次序向服务器传递一系列参数:
hwDetect: "<0112>" gxDepthBits: "<32>" gxResolution: "<1024x768>" gxRefresh: "<60>" fullAlpha: "<1>" lodDist: "<100.0>" DistCull: "<500.0>"
在程序中我们将各个参数按次序收集到列表中:
["<0112>","<32>","<1024x768>","<60>","<1>","<100.0>","<500.0>"]
最终我们要把各个参数拼接成一个数据包进行发送:
"<0112><32><1024x768><60><1><100.0><500.0>"
解决方案
迭代列表,连续使用'+'操作依次拼接每一个字符串
>>> for n in ["<0112>","<32>","<1024x768>","<60>","<1>","<100.0>","<500.0>"]: ... result += n ... >>> result '<0112><32><1024x768><60><1><100.0><500.0>'
使用str.join()
方法,更加快速的拼接列表中所有字符串
>>> result = ''.join(["<0112>","<32>","<1024x768>","<60>","<1>","<100.0>","<500.0>"]) >>> result '<0112><32><1024x768><60><1><100.0><500.0>'
如果列表中有数字,可以使用生成器进行转换:
>>> hello = [222,'sd',232,'2e',0.2] >>> ''.join(str(x) for x in hello) '222sd2322e0.2'
五、如何对字符串进行左, 右, 居中对齐?
实际案例
某个字典中存储了一系列属性值:
{ 'ip':'127.0.0.1', 'blog': 'www.anshengme.com', 'title': 'Hello world', 'port': '80' }
在程序中,我们想以以下格式将其内容输出,如何处理?
ip : 127.0.0.1 blog : www.anshengme.com title : Hello world port : 80
解决方案
使用字符串的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
使用format()
方法,传递类似'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
六、如何去掉字符串中不需要的字符?
实际案例
过滤掉用户输入卡后多余的空白字符: 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@gmail.com' >>>
删除某个固定位置的字符,可以使用切片+拼接的方法
>>> s[:3] + s[4:] 'abc123'
字符串的replace()
方法或正则表达式re.sub()
删除任意位置字符
>>> s = '\tabc\t123\txyz' >>> s.replace('\t', '') 'abc123xyz'
使用re.sub()
删除多个
>>> import re >>> re.sub('[\t\r]','', string) 'abc123xyzopq'
字符串translate()
方法,可以同时删除多种不同字符
>>> import string >>> s = 'abc123xyz' >>> s.translate(string.maketrans('abcxyz','xyzabc')) 'xyz123abc'
>>> s = '\rasd\t23\bAds' >>> s.translate(None, '\r\t\b') 'asd23Ads'
# python2.7 >>> i = u'ní hǎo, chī fàn' >>> i u'ni\u0301 ha\u030co, chi\u0304 fa\u0300n' >>> i.translate(dict.fromkeys([0x0301, 0x030c, 0x0304, 0x0300])) u'ni hao, chi fan'
总结
以上就是为大家整理的Python中字符串的处理技巧,文中通过案例、解决方案以及实例来演示如何解决,对大家学习或者使用python具有一定的参考借鉴价值。有需要的可以参考借鉴。
更多Python中字符串的处理技巧分享相关文章请关注PHP中文网!

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

如何解決jieba分詞在景區評論分析中的問題?當我們在進行景區評論分析時,往往會使用jieba分詞工具來處理文�...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Dreamweaver Mac版
視覺化網頁開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。