簡體   English   中英

如何在python中使用正則表達式的unicode字符串?

[英]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.

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