>>li=['cxk','cxk','kk','caibi']>>>''.join([str(i)fori" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python學習---超詳細字符串用法大全,好文推薦!

系統 1602 0

來自:Python編程與實戰(微信號:pthon1024),作者:Jerryning

沒有辦法轉,整個復制下來了

本文要點

  • 字符串拼接

  • 拆分含有多種分隔符的字符串

  • 判讀字符串a是否以字符串b開頭或結尾

  • 調整字符串中文本的格式

  • 對字符串進行左,右,居中對齊

  • 刪除字符串中不需要的字符

字符串拼接

實際場景:把列表中的數據拼接成一個字符串

解決方案:使用 str.join() 方法

          
            >>>?li?=?[
            
              'cxk',?
              
                'cxk',?
                
                  'kk',?
                  
                    'caibi']
                    
>>>? ''.join([str(i)? for?i? in?li])
'cxkcxkkkcaibi'

推薦使用生成器表達式,如果列表很大,可以節省很多內存空間

          
            >>>?
            
              ''.join(str(i)?
              
                for?i?
                
                  in?li)
                  
'3cxkkkcaibi'

拆分含有多種分隔符的字符串

實際場景:把某個字符串依據分割符號拆分不同的字段,該字符串包含多種不同的分隔符

          
            s?=?
            
              "ab;fd/ft|fs,f\tdf.fss*dfd;fs:uu}fsd"
              

1.使用 python 中的 split() 方法,由于 split 一次處理一個分隔符,例如:

          
            >>>?res?=?s.split(
            
              ';')
              
>>>?res
[ 'ab',? 'fd/ft|fs,f\tdf.fss*dfd',? 'fs:uu}fsd']

所以我們需要根據字符串中的分隔符,依次分割,可以是 map 函數!

          
            >>>?list(map(
            
              lambda?x:?x.split(
              
                "|"),?res))
                
[[ 'ab'],?[ 'fd/ft',? 'fs,f\tdf.fss*dfd'],?[ 'fs:uu}fsd']]

結果變成了一個二維列表,而我們想要的結果是一維列表,怎么辦?

創建一個臨時列表保存結果。

          
            >>>?t?=?[]
            
>>>?list(map( lambda?x:?t.extend(x.split( "|")),?res))
[ None,? None,? None]
>>>?t
[ 'ab',? 'fd/ft',? 'fs,f\tdf.fss*dfd',? 'fs:uu}fsd']

結果符合我們的預期!接下來繼續處理剩余的分隔符,重復動作,用 for 循環搞定!

最終代碼如下:

          
            
              
                def?
                
                  my_split
                  
                    (s,?ds):
                    
????res?=?[s]

???? for?d? in?ds:
????????t?=?[]
????????list(map( lambda?x:?t.extend(x.split(d)),?res))
????????res?=?t
???? return?res

將字符串和字符串中所有的分隔符傳入,結果如下:

          
            s?=?
            
              "ab;fd/ft|fs,f\tdf.fss*dfd;fs:uu}fsd"
              
print(my_split(s,? ";/|,.}:*\t"))

運行結果:['ab', 'fd', 'ft', 'fs', 'f', 'df', 'fss', 'dfd', 'fs', 'uu', 'fsd']

2.使用 re 模塊的中 split() 方法

re() 也給我們提供了 split() 方法,可以一次性分隔字符串!

          
            
              import?re
              

s?=? "ab;fd/ft|fs,f\tdf.fss*dfd;fs:uu}fsd"
print(re.split( '[;/|,.}:*\t]',?s))

結果一致,是不是很簡單粗暴!

判讀字符串a是否以字符串b開頭或結尾

實際場景:比如某目錄下有一系列文件:

Python學習---超詳細字符串用法大全,好文推薦!_第1張圖片

編寫程序給其中所有 .txt 文件和 .py 文件加上用戶可執行權限

解決方案:

使用字符串 str.startswith() 和 str.endswith()

找出以 .txt 和 .py 結尾的文件,其接受一個元組

          
            >>>?
            
              import?os
              
>>>?os.listdir( ".")
[ 'app',? 'config',? 'requirements.txt',? 'run.py',? '__pycache__',? 'gunicorn.conf.py',? 'chromedriver',? 'login_after2.png',? 'readme.txt',? 'slide.png',? 'test.py',? 'logs',? 'chrome-linux.zip',? 'gunicorn.pid',? 'asgi.py',? 'chrome-linux']

>>>?[name? for?name? in?os.listdir( ".")? if?name.endswith(( ".txt",? ".py"))]
[ 'requirements.txt',? 'run.py',? 'gunicorn.conf.py',? 'readme.txt',? 'test.py',? 'asgi.py']

調整字符串中文本的格式

實際案列:例如在日志文件中,其中日期格式為'yyyy-mm-dd':

Python學習---超詳細字符串用法大全,好文推薦!_第2張圖片

我們想把其中的日期改為美國日期格式'mm/dd/yyyy'.比如 2019-06-12 改成 06/12/2019 格式

解決方案:使用 re 中的 sub() 方法做字符串替換

利用正則表達式中的捕獲組,捕獲每個部分的內容,然后在替換在替換的字符串中調整各個捕獲組的順序!

代碼如下:

          
            
              import?re
              

with?open( "info.log",? "r",?encoding= "utf-8")? as?f:
????file?=?f.read()

print(re.sub( '(\d{4})-(\d{2})-(\d{2})',? r'\2/\3/\1',?file))

捕獲組中每組需要用括號括起來,然后默認從左至右分為組1, 組2…

下一個參數是我們要替換的格式,用 1,2,3 分別表示組1, 組2…

運行結果如下:

Python學習---超詳細字符串用法大全,好文推薦!_第3張圖片

對字符串進行左,右,居中對齊

解決方案:

1.使用字符串中的 str.ljust(), str.rjust(), str.center() 進行左右居中對齊!

以上三種方法的基本用法:

          
            >>>?s?=?
            
              'abc'
              
>>>?s.ljust( 20,? '=')
'abc================='
>>>?s.ljust( 20)
'abc???????????'

三種方法都可以設置默認填充值

2.使用內置的 format() 方法

          
            >>>?format(s,?
            
              ">20")
              
'?????????????????abc'
>>>?format(s,? "<20")
'abc?????????????????'
>>>?format(s,? "^20")
'????????abc?????????'

刪除字符串中不需要的字符

實際案例

  1. 過濾掉用戶輸入中前后多余的空白字符:“ ? ?nick2008@gmail.com ? ?”

  2. 過濾掉某 windows 下編輯文本中的 “\r” :“hello world \r\n”

  3. 去掉文本中的 unicode 組合符號(音調):nǐ hǎo mā

解決方案

  • 使用 str.strip(), str.lstrip(), str.rstrip() 方法去掉字符串兩端字符

  • 使用 str.replace() 或者正則中的 re.sub()

  • 使用字符串中 str.translate() 方法,可以同時刪除多個不同的字符

我踏過的,是不曾虛度的昨天,我去向的 ,永遠是比今天更好的遠方


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久综合综合久久 | 亚洲一级毛片在线观播放 | 国产高清不卡一区二区 | 99爱在线视频这里只有精品 | 九九夜夜| 四虎成人免费观看在线网址 | 精品免费视频 | 精品一区二区三区四区乱码90 | 狠狠色噜噜狠狠狠狠色综合网 | 国产精品免费播放 | 毛茸茸性毛茸茸大b | 亚洲欧美日韩高清一区二区一 | 久久www香蕉免费人成 | 日本高清免费不卡视频 | jizzjizz中国丝袜美女 | 日韩国产精品99久久久久久 | 亚洲国产日产韩国欧美综合 | 亚洲综合久久久久久中文字幕 | 亚洲欧美日韩精品久久久 | 欧美夜夜片a | 大陆60老妇xxxxhd | 欧美成人午夜视频 | 成人国产激情福利久久精品 | 欧美精品在线播放 | 亚洲性爰视频 | 四虎www成人影院观看 | 亚洲国产精品第一区二区 | 九月婷婷天天澡天天添天天爽 | 欧美a级成人淫片免费看 | 裸身裸乳免费视频网站 | 老司机深夜福利影院 | 天天操天天摸天天干 | 欧美亚洲另类视频 | 欧美日韩中文国产一区 | 九九视频这里只有精品 | 五月天色中色 | 日韩欧美中文字幕出 | 日韩亚洲综合精品国产 | 波多野结衣亚洲一区二区三区 | 奇米影视第四色888 奇米影视第四色首页 | 中文字幕日韩女同互慰视频 |