[英]How do I match all unicode lowercase characters in Python with a regular expression?
[英]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_jkpahjicmehopmlkbenbkmckcedlcmhk”嘗試,它就可以正常工作。 但是,使用特殊的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.