簡體   English   中英

如何在Python中處理具有unicode的正則表達式?

[英]How do I process a regular expression having unicode in Python?

因此,我在Python中有這個字符串str = u'world-weather-online®_jkpahjicmehopmlkbenbkmckcedlcmhk' ,我只想使用正則表達式提取其中的world-weather-online®部分。 我要做的是先match = re.search(r'([a-zA-Z0-9\\-\\%\\+]+?)_[az]+', str) ,然后將結果轉換為字符串str2 = match.group(1)

但是,我最終'NoneType' object has no attribute 'group'錯誤'NoneType' object has no attribute 'group' 如果我僅使用字符串“ world-weather-online_jkpahjicmehop​​mlkbenbkmckcedlcmhk”嘗試,它就可以正常工作。 但是,使用特殊的unicode符號會帶來問題。 我嘗試使用match = re.search(ur'([a-zA-Z0-9\\-\\%\\+]+?)_[az]+', str)但仍然無濟於事。 關於如何解決這一問題的任何想法? 謝謝!

使用Unicode正則表達式,並在模式中包含代碼點:

match = re.search(ur'([a-zA-Z0-9®%+-]+?)_[a-z]+', yourstr)

您可能要考慮除商標®代碼點之外還應該包括哪些其他代碼點。

演示:

>>> import re
>>> yourstr = u'world-weather-online®_jkpahjicmehopmlkbenbkmckcedlcmhk'
>>> print re.search(ur'([a-zA-Z0-9®%+-]+?)_[a-z]+', yourstr).group(1)
world-weather-online®

好吧,我認為您只在正則表達式中忘記了®:

>>> match = re.search(r'([a-zA-Z0-9\-\%\+®+]+?)_[a-z]+', str)
>>> match.group(1)
u'world-weather-online\xae'

但是,如果您的字符串包含更多的Unicode字符,則您的正則表達式可能會很長……因此,只要re.search(r'(.*)_[az]+', str)就能解決問題。

如果只想將wrt拆分為“ _”:

>>> str.split('_')[0]
u'world-weather-online\xae'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM