,<;>,<|>,<\t>都是分隔符,如何處理?解決方案連續使用split()方法,每次處理一種分隔符#使用Python2defmySplit(s,ds):res=[s]fordinds:t=[]map(lam" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統 1612 0

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

實際案例

我們要把某個字符串依據分隔符號拆分不同的字符段,該字符串包含多種不同的分隔符,例如:

            
s = 'asd;aad|dasd|dasd,sdasd|asd,,Adas|sdasd;Asdasd,d|asd'
          

其中 <,>,<;>,<|>,<\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)
          
            
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
            
              \d{4})-(?P
              
                \d{2})-(?P
                
                  \d{2})', r'\g
                  
                    /\g
                    
                      /\g
                      
                        ' , 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','^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組合符號(音調): ‘ni? ha?o, chi? fa?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'ni? ha?o, chi? fa?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相關內容感興趣的讀者可查看本站專題:《Python字符串操作技巧匯總》、《Python編碼操作技巧總結》、《Python圖片操作技巧總結》、《Python數據結構與算法教程》、《Python Socket編程技巧總結》、《Python函數使用技巧總結》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 99久久免费国产精品 | 欧美―第一页―浮力影院 | 澳门一级淫片免费视频 | 亚洲精品三级 | aaa毛片免费观看 | 国产福利不卡一区二区三区 | 中文字幕亚洲欧美 | 水野朝阳128部合集在线 | 国产一区二区三区久久久久久久久 | 久久精品国产线看观看亚洲 | 精品视频在线观看 | 国产一区二区黑人欧美xxxx | 精品一区二区免费视频视频 | 一道本在线观看视频 | 欧美精品一区二区在线观看 | 777久久婷婷成人综合色 | 久久精品久久精品国产大片 | 久久夜色精品国产亚洲噜噜 | 久久久久国产精品免费免费搜索 | 亚洲综合亚洲国产尤物 | 日韩欧美视频在线 | 亚洲成人av一区二区 | 极品尤物一区二区三区 | 欧美午夜色视频国产精品 | 成人在线视频网站 | 亚洲国产精品成人 | 久久精品av麻豆的观看方式 | 久久久亚洲伊人色综合网站 | 成人亚洲欧美日韩在线 | 久久成人18免费网站 | 日本黄大片影院一区二区 | 久久网页| 国产激情久久久久久熟女老人AV | 免费一级网站 | 国产一区二区欧美 | 国产亚洲精品久久一区二区三区 | 亚洲欧美久久婷婷爱综合一区天堂 | 国产成人99久久亚洲综合精品 | 欧美电影一区 | 国产色婷婷精品综合在线观看 | 91麻豆蜜桃一区二区三区 |