[英]How can I use regular expression or any other method to sub a specific pattern of a string (python 2.7)?
[英]How can I use regular expression for unicode string in python?
嗨,我想在以下字符串中使用正則表達式unicode utf-8:
</td><td>عـــــــــــادي</td><td> 40.00</td>
我想選擇"عـــــــــــادي"
,我該怎么做?
我的代碼是:
state = re.findall(r'td>...</td',s)
謝謝
當我試圖用俄語匹配一個字符串時,我碰到了類似的東西。 根據您的情況,Michele的答案很好。 但是,如果你想使用像\\w
和\\s
這樣的特殊序列,你必須改變一些東西。 我只是分享這個,希望它對其他人有用。
>>> string = u"</td><td>Я люблю мороженое</td><td> 40.00</td>"
通過在引號前放置一個u
使字符串成為unicode
>>> pattern = re.compile(ur'>([\w\s]+)<', re.UNICODE)
將標志設置為unicode,以便它也匹配unicode字符串(請參閱docs )。
(或者,您可以使用當地語言設置范圍。對於俄語,這將是[а-яА-Я]
,因此:
pattern = re.compile(ur'>([а-яА-Я\s]+)<')
在這種情況下,您不必再設置標志,因為您沒有使用特殊序列。)
>>> match = pattern.findall(string)
>>> for i in match:
... print i
...
Я люблю мороженое
根據PEP 0264:定義Python源代碼編碼 ,首先你需要通過在第一行添加這樣的注釋來告訴Python整個源文件是UTF-8編碼的:
# -*- coding: utf-8 -*-
此外,嘗試在字符串之前添加“ ur ”,以便它是原始的 和 Unicode :
state = re.search(ur'td>([^<]+)</td',s)
res = state.group(1)
我還編輯了你的正則表達式以使其匹配。 三個點意味着“正好三個字符”,但由於您使用的是UTF-8,這是一個多字節編碼,因此可能無法正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.