盤點一個字符串處理問題(拆分英文文本)
回復“資源”即可獲贈Python學習資料
大家好,我是皮皮。
一、前言
前幾天在Python最強王者群有個叫【老松鼠】的粉絲問了一道關(guān)于字符串處理問題,如下圖所示。

原文本如下所示:
比如"WeLovePython"
轉(zhuǎn)化為為"We?love?python"
意思就是輸出的字符串,第一個是大寫,后面全部是小寫。
二、實現(xiàn)過程
這里【冷喵】給了一個思路:挨個循環(huán) 如果是大寫字母檢查前面有沒有空格 沒有空格就加一個 最后把開頭的那個空格去掉。這里【瑜亮老師】給了一份代碼,如下圖所示:
#?coding:utf-8
#?@Time?:?2022/5/4?11:46
#?@Author:?皮皮
#?@公眾號:?Python共享之家
#?@website?:?http://pdcfighting.com/
#?@File?:?字符串.py
#?@Software:?PyCharm
text?=?"WeLovePython"
res?=?''.join(["?"+i?if?i.isupper()?else?i?for?i?in?text]).strip()
print(res)
思路:如果是大寫字母就變成空格+大寫,否則就不變。這個代碼親測好使,運行之后結(jié)果如下。

這里確實是實現(xiàn)了單詞的拆分,每個單詞的首字母大寫了。不過有個細節(jié)需要注意下,題目的要求是除了第一個字母大寫外,后面要變小寫。所以目前是解決了一半,還有一半需要繼續(xù)解決。
這里【冷喵】給了一份代碼,如下所示:
text?=?"WeLovePython"
res?=?''.join(["?"?+?i?if?i.isupper()?else?i?for?i?in?text]).strip()
print(res)
b?=?res[0]?+?''.join([i.lower()?for?i?in?res[1:]])
print(b)
代碼運行之后,結(jié)果如下圖所示:

【月神】后來在這個代碼的基礎(chǔ)上,也給了一份代碼,如下所示:
text?=?"WeLovePython"
res?=?text[0]?+?''.join(["?"?+?i?if?i.isupper()?else?i?for?i?in?text[1:]]).lower()
print(res)
res?=?''.join(["?"?+?i?if?i.isupper()?else?i?for?i?in?text]).strip().capitalize()
print(res)

一共兩種方法。
后來【瑜亮老師】也補充了一份代碼,思路一致的,具體實現(xiàn)上有所變形。思路:先取出首字母,然后剩余的小寫不用動,大寫直接變成空格+小寫。
text?=?"WeLovePython"
res1?=?text[0]?+?''.join(["?"?+?i.lower()?if?i.isupper()?else?i.lower()?for?i?in?text[1:]])
print(res1)

后來【馮誠】也給了一個代碼,本質(zhì)上是一樣的,如下所示。
text?=?"WeLovePython"
res?=?''.join(["?"+i?if?i.isupper()?else?i?for?i?in?text]).strip()
res1=res[:1]+res[1:].lower()
res1

后來【月神】還給了一份正則表達式的代碼,有點新奇。
import?re
text?=?"WeLovePython"
result?=?re.sub(r'\w[A-Z]',?lambda?x:?'?'.join(x.group(0).lower()),?text)
print(result)
對正則表達式不熟悉的小伙伴,理解起來還是有點難懂的。這里稍微拆解了下,幫助大家理解,如下圖所示:

三、總結(jié)
大家好,我是皮皮。這篇文章主要盤點一個字符串處理問題(拆分英文文本),文中給出了五個方法,思路基本上都是一致的,如果你還有其他方法,也歡迎大家積極嘗試,一起學習,記得分享給我哦。
最后感謝粉絲【老松鼠】提問,感謝【冷喵】、【逸】、【馮誠】、【瑜亮老師】和【月神】在運行過程中給出的思路和代碼建議,感謝粉絲【dcpeng】等人參與學習交流。
小伙伴們,快快用實踐一下吧!如果在學習過程中,有遇到任何問題,歡迎加我好友,我拉你進Python學習交流群共同探討學習。
-------------------?End?-------------------
往期精彩文章推薦:

歡迎大家點贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學習群請在后臺回復【入群】
萬水千山總是情,點個【在看】行不行
