最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2016年09月17日 10:01:06   投稿:daisy  
這篇文章給大家分享了Python中字符串的處理技巧,包括拆分含有多種分隔符的字符串、判斷字符串a(chǎn)是否以字符串b開頭或結(jié)尾、調(diào)整字符串中文本的格式已經(jīng)將多個(gè)小字符串拼接成一個(gè)大的字符串等,感興趣的朋友們可以通過閱讀下文來學(xué)習(xí)。

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

實(shí)際案例

我們要把某個(gè)字符串依據(jù)分隔符號(hào)拆分不同的字符段,該字符串包含多種不同的分隔符,例如:

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

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

解決方案

連續(xù)使用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']

使用正則表達(dá)式的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(chǎn)是否以字符串b開頭或結(jié)尾?

實(shí)際案例

如某目錄有如下文件:

quicksort.c graph.py heap.java install.sh stack.cpp ......

現(xiàn)在需要給.sh.py結(jié)尾的文件夾上可執(zhí)行權(quán)限

解決方案

使用字符串的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

三、如何調(diào)整字符串中文本的格式?

實(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,要如何處理?

解決方案

使用正則表達(dá)式re.sub()方法做字符串替換

利用正則表達(dá)式的捕獲組,捕獲每個(gè)部分內(nèi)容,在替換字符串中各個(gè)捕獲組的順序。

>>> 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' # 使用正則表達(dá)式的分組 >>> 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'

四、如何將多個(gè)小字符串拼接成一個(gè)大的字符串?

實(shí)際案例

在設(shè)計(jì)某網(wǎng)絡(luò)程序時(shí),我們自定義了一個(gè)基于UDP的網(wǎng)絡(luò)協(xié)議,按照固定次序向服務(wù)器傳遞一系列參數(shù):

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

在程序中我們將各個(gè)參數(shù)按次序收集到列表中:

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

最終我們要把各個(gè)參數(shù)拼接成一個(gè)數(shù)據(jù)包進(jìn)行發(fā)送:

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

解決方案

迭代列表,連續(xù)使用'+'操作依次拼接每一個(gè)字符串

>>> 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>'

如果列表中有數(shù)字,可以使用生成器進(jìn)行轉(zhuǎn)換:

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

五、如何對(duì)字符串進(jìn)行左, 右, 居中對(duì)齊?

實(shí)際案例

某個(gè)字典中存儲(chǔ)了一系列屬性值:

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

在程序中,我們想以以下格式將其內(nèi)容輸出,如何處理?

ip : 127.0.0.1 blog : www.anshengme.com title : Hello world port : 80

解決方案

使用字符串的str.ljust() , str.rjust,str.cente()進(jìn)行左右居中對(duì)齊

>>> info = {'ip':'127.0.0.1','blog': 'www.anshengme.com','title': 'Hello world','port': '80'} # 獲取字典中的keys最大長(zhǎng)度 >>> max(map(len, info.keys())) 5 >>> w = max(map(len, info.keys())) >>> for k in info: ... print(k.ljust(w), ':',info[k]) ... # 獲取到的結(jié)果 port : 80 blog : www.anshengme.com ip : 127.0.0.1 title : Hello world

使用format()方法,傳遞類似'<20','>20','^20'參數(shù)完成同樣任務(wù)

>>> 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

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

實(shí)際案例

過濾掉用戶輸入卡后多余的空白字符: anshengm.com@gmail.com

過濾某windows下編輯文本中的'\r': hello word\r\n

去掉文本中的unicode組合符號(hào)(音調(diào)): ‘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' >>>

刪除某個(gè)固定位置的字符,可以使用切片+拼接的方法

>>> s[:3] + s[4:] 'abc123'

字符串的replace()方法或正則表達(dá)式re.sub()刪除任意位置字符

>>> s = '\tabc\t123\txyz' >>> s.replace('\t', '') 'abc123xyz'

使用re.sub()刪除多個(gè)

>>> import re >>> re.sub('[\t\r]','', string) 'abc123xyzopq'

字符串translate()方法,可以同時(shí)刪除多種不同字符

>>> 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'

總結(jié)

以上就是為大家整理的Python中字符串的處理技巧,文中通過案例、解決方案以及實(shí)例來演示如何解決,對(duì)大家學(xué)習(xí)或者使用python具有一定的參考借鑒價(jià)值。有需要的可以參考借鑒。

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》、《Python圖片操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

相關(guān)文章

  • NumPy索引與切片的用法示例總結(jié)

    NumPy索引與切片的用法示例總結(jié)

    numpy 數(shù)組索引是一個(gè)大話題,有很多種方式可以讓你選中數(shù)據(jù)的子集或某個(gè)單個(gè)元素,一維數(shù)組比較簡(jiǎn)單,看起來和 python 的列表很類似,這篇文章主要給大家介紹了關(guān)于NumPy索引與切片用法的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • Python各種擴(kuò)展名區(qū)別點(diǎn)整理

    Python各種擴(kuò)展名區(qū)別點(diǎn)整理

    在本篇文章里小編給大家整理的是關(guān)于Python各種擴(kuò)展名區(qū)別點(diǎn)整理,需要的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • 利用Pycharm連接服務(wù)器的全過程記錄

    利用Pycharm連接服務(wù)器的全過程記錄

    平時(shí)在遠(yuǎn)程連接服務(wù)器,大多數(shù)都是使用 Xshell,其實(shí)對(duì)于經(jīng)常寫python的小伙伴,我們還有一個(gè)使用起來更加方便,就是常用的python集成IED工具Pycharm,這篇文章主要給大家介紹了關(guān)于如何利用Pycharm連接服務(wù)器的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • python簡(jiǎn)介及下載安裝

    python簡(jiǎn)介及下載安裝

    這篇文章介紹了python以及下載安裝的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python如何實(shí)用File文件的實(shí)現(xiàn)

    Python如何實(shí)用File文件的實(shí)現(xiàn)

    本文主要介紹了Python如何實(shí)用File文件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python中super關(guān)鍵字用法實(shí)例分析

    Python中super關(guān)鍵字用法實(shí)例分析

    這篇文章主要介紹了Python中super關(guān)鍵字用法,實(shí)例分析了super關(guān)鍵字的功能及相關(guān)使用技巧,需要的朋友可以參考下
    2015-05-05
  • wxPython事件驅(qū)動(dòng)實(shí)例詳解

    wxPython事件驅(qū)動(dòng)實(shí)例詳解

    這篇文章主要介紹了wxPython事件驅(qū)動(dòng)機(jī)制,以一個(gè)獲取當(dāng)前位置信息的實(shí)例形式講述了wxPython事件驅(qū)動(dòng)機(jī)制及其相關(guān)函數(shù)的用法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-09-09
  • python-numpy-指數(shù)分布實(shí)例詳解

    python-numpy-指數(shù)分布實(shí)例詳解

    今天小編就為大家分享一篇python-numpy-指數(shù)分布實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 在Django的上下文中設(shè)置變量的方法

    在Django的上下文中設(shè)置變量的方法

    這篇文章主要介紹了在Django的上下文中設(shè)置變量的方法,Django是重多Python高人氣框架中最為著名的一個(gè),需要的朋友可以參考下
    2015-07-07
  • python實(shí)現(xiàn)通過隊(duì)列完成進(jìn)程間的多任務(wù)功能示例

    python實(shí)現(xiàn)通過隊(duì)列完成進(jìn)程間的多任務(wù)功能示例

    這篇文章主要介紹了python實(shí)現(xiàn)通過隊(duì)列完成進(jìn)程間的多任務(wù)功能,結(jié)合實(shí)例形式分析了Python隊(duì)列完成進(jìn)程間的多任務(wù)以及進(jìn)程池pool相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10

最新評(píng)論

肃北| 淮滨县| 舞阳县| 神木县| 邯郸市| 城市| 晴隆县| 井冈山市| 固原市| 铜鼓县| 高密市| 桦川县| 阆中市| 汤阴县| 榆中县| 沁源县| 万年县| 炉霍县| 保康县| 花莲县| 阳东县| 横峰县| 呼伦贝尔市| 日土县| 常宁市| 北流市| 顺昌县| 江源县| 武汉市| 巨鹿县| 沾益县| 安仁县| 临猗县| 六枝特区| 内丘县| 仁寿县| 皮山县| 子洲县| 永靖县| 镶黄旗| 崇礼县|