元旦將至,祝新年快樂的最佳方式,用Python找到Happy New Year!

2021-01-10 python高手養成

元旦快到了,大家想好怎麼過了嗎?新的一年有什麼打算呢?今天,跟大家一起做一個簡單的Python小案例:從一串亂碼中找出Happy New Year。提前,祝大家新年快樂!

新的一年要有學習計劃哦

前幾篇內容我們了解了拼接字符串的常用方法(參見真的了解字符串拼接嗎?用Python拼接字符串的常用方法及性能分析),並對幾種字符串拼接方法作了性能上的分析(參見字符串拼接方式哪種快?使用Python分析連接字符的常用方法及性能)。今天的內容當然是字符串的拆分咯!

廢話不多說,奔主題了

我們要拆分的字符串長這樣:

s = '!,H*,(a,).&%p,|#%-+=p?y*$N{[e[}}><w+^|Y/e$#@;a-r@'

需求是將其中的Happy New Year提取出來!

如何拆分字符串呢?

分析

簡單來講,今天的內容就是Python字符串的拆分。我們知道,Python中字符串使用split(s)方法可以以s為分隔符,將一個字符串進行拆分,使用split()方法應該也可以實現我們的需求。

分析一下吧!

還有一種方法就是使用re模塊中的split(s, ds)方法,按照所能匹配的字串模式ds將字符串s進行切分,返回切分後的字符串列表。

解決問題

我們先看下需要排除哪些字符串:ds ='!,*().%,|-+=?${[}><^/#@;^&'(非英文字符基本都有了)。

方法一:使用str.split()函數

我們先來以','進行拆分

>>>

['!', 'H*', '(a', ').&%p', '|#%-+=p?y*$N{[e[}}><w+^|Y/e$#@;a-r@']

分成了四個元素的列表。再來使用『?』進行拆分:

t = []

for item in s.split(','):

t.extend(item.split('.'))

>>>

['!', 'H*', '(a', ')', '&%p', '|#%-+=p?y*$N{[e[}}><w+^|Y/e$#@;a-r@']

……那麼,有沒有規律可循呢?

有規律嗎?

我們每次拆分都會得到一個列表,然後每次都會從新的列表裡面遍曆元素進行拆分,這樣的話,我們可以使用下面這種方式:

# 將需要拆分的字符串裝入一個列表中

r = [s]

# 循環遍歷每一個分隔符

for d in ds:

# 創建一個空列表,接受每次分割的結果

t = []

# 遍歷需要分割的列表r

for item in r:

# 將列表中元素分割後的結果擴展到空列表t中

t.extend(item.split(d))

# 此時,將t的內容賦值給列表r

r = t

# 最後返回結果,連接字符串

''.join([x for x in r if x != ''])

>>>HappyNewYear

成功拆分

拆分成功!

方法二:使用re.split()方法

相對來說比較簡單,我們使用之前定義的ds進行排除,代碼如下:

''.join([x for x in re.split(ds, s) if x != ''])

>>>

re.error: unterminated character set at position 27

看到結果了嗎?程序出錯了,原因是我們的字符串內又託字符"^",這個字符在re表達式中是取反的意思。這表示,如果我們使用上面定義的ds,是得不到結果的。那有沒有別的辦法呢?

我們換一種思路,這樣修改ds看下結果

ds = '[^a-zA-Z0-9]+' # 匹配非字母、數字的字符

''.join([x for x in re.split(ds, s) if x != ''])

>>>HappyNewYear

又成功了!

成功拆分!

re和str的拆分字符串的方法孰優孰劣?如果對正則表達式熟悉,那麼,拆分這個字符串就很簡單,如果不熟悉的話就循環遍歷吧!怎麼樣?從這簡單的案例可以看出正則表達式的重要性了嗎?可以幫我們省不少代碼呢?給喜歡或想研究正則表達式的小夥伴們推薦一本秘籍,傳說中的貓頭鷹書,可以全方位了解掌握正則表達式,喜歡的小夥伴趕緊入手吧:

好了,今天的內容就到這裡了,這項技能Get到了嗎?

祝大家新年快樂!小夥伴們別光顧著過元旦了,新的一年要定下學習目標哦!

新年快樂

還有沒有別的字符串拆分的方法呢?歡迎大家留言討論。喜歡Python的小夥伴們關注我,大家一起學習提高……

轉載請註明出處,百家號:Python高手養成

相關焦點

  • 2021年的第一天,祝大家元旦快樂!
    元旦祝福 1.Wishing you a Happy New Year with the hope that you will have many blessings in the year to come. 新年快樂!祝新的一年喜事連連!
  • 還在說新年快樂?不落俗套的英文祝福了解一下
    馬上就是元旦了,不知道大家準備怎麼樣發祝福呢?新年快樂還是happy new year?說起來都太俗套,和別人「撞」祝福。那什麼樣的祝福才更有新意呢?就讓小編來和大家分享一些新穎的拜年詞吧!Let the year ahead be the one where all your dreams come true.
  • 英文賀卡新年祝福語
    想讓你得元旦祝福與眾不同呢?以下是小編為大家精心搜集和整理的英文賀卡新年祝福語,希望大家喜歡! 1、願你快樂新年,幸福一生! Wish you a happy new year and a happy life!
  • How to Say Happy New Year in Chinese
    ↑ Fllow us on WechatUnsurprisingly, with such vast variations in Chinese culture and ethnic groups around the world, there are many ways to say happy
  • 元旦英語怎麼說?鼠年元旦賀詞(中英對照)
    1.元旦節   元旦英語詞典中的解釋:New Year's Day is the first day of the year. In Western countries this is the 1st of January. 元旦節是新年的第一天。在西方國家,元旦節是一月一日。
  • 新年快樂,祝天下低碳人健康快樂,闔家幸福....
    各位低碳的家人們,新年快樂,瘦龍給您拜年啦。
  • 告別過去迎接未來 祝元旦快樂
    我們是香港皇家警察,你已經被我方新年快樂和萬事如意包圍了,乖乖接受祝福才是唯一的出路!否則將有更多的牛年大發雨天天開心射向你!元旦愉快!  人生忙忙碌碌,日子酸酸甜甜,緣分簡簡單單,聯繫斷斷續續,惦記時時刻刻,我的祝福長長久久!我的朋友,天氣轉涼,注意保暖啊!祝元旦快樂!  我們是警察!
  • 聽英文繪本 | Bringing In The New Year,正月裡來是新年,祝大家...
    繪本圖文欣賞Bringing in the new year新年快樂good luck sign,bunny lantern,red envelope,drum,dumplings,symbolic sun ,qi pao, noisemaker,oranges,firecrackers,spring
  • 新年英文祝福語集錦
    3、I would like to wish you a joyous new year and express my hope for your happiness and good future.祝新年快樂,並願你幸福吉祥,前程似錦。
  • 最新2020春節祝福語英文版:2020新年英語祝福語(附翻譯)
    願女兒的新年祝福帶給你快樂。   3、To wish you special joy at the holidays and all year.   祝你在節日和新的一年中享有無限的快樂。   4、We won't forget you this holiday season.   假期裡,我們不會忘記您的。
  • 吉米老師:新年祝福語,這些表達更高級
    那除了 happy new year,我們還能怎麼祝福別人呢?實用口語表達常見新年祝福語對朋友說Best of luck in the year to come.願你在未來的一年裡,吉星高照。Have a joyous New Year! 祝你有個快樂的新年。
  • 2018年元旦新年祝福與賀詞大全 狗年2018狗年簡訊微信說說祝福語
    等有錢了,我要用美元為你鋪地,用黃金給你蓋屋,讓鈔票給你點菸,請嫦娥為你捶背,今日元旦,祝你元旦快樂!   23. 元旦未到,祝福先到;簡訊問好,友人可安;祝願朋友,財源滾滾;吉祥高照,鴻運當頭;幸福圍繞,健康相伴;一生平安,萬事順心;笑口常開,新年快樂!   24.
  • 2020世界上第一個迎接新年曙光的地方在哪裡呢?Happy New Year
    新的一年即將到來,在這個辭舊迎新的時刻,捎去我們最溫暖的祝福,祝你新年快樂!Happy New Year [hpi nu jr](美)那麼究竟世界上第一個迎接新年曙光的地方在哪裡呢?和寶寶一起在Tips小貼士裡面尋找答案吧!寶寶讀對了沒?