【发布时间】:2015-07-28 00:59:11
【问题描述】:
我正在使用 python 在字符串中搜索一些简单的西里尔字母模式。我使用的模式类似于/[а-я]+/[а-я]+。当我通过此代码搜索模式时
import re
re.search('/[а-я]+/[а-я]+', '/бцршб/бйцбйц')
它找不到任何东西。但是当我这样写的时候。
import re
re.search(u'/[а-я]+/[а-я]+', u'/бцршб/бйцбйц')
它有效。但是在我的情况下,模式和文本是在数据库中预定义的,所以我找不到将它们转换为 Unicode 字符串的方法。在这种情况下有什么解决方案。任何帮助,将不胜感激。
【问题讨论】:
-
“在存储中预定义”是什么意思?请发布一个完整的简短程序来演示您遇到的问题。
-
@jwodder 你可以尝试在字符串上使用
decode(),它会给你AttributeError: 'str' object has no attribute 'decode'。 -
@Anand:实际上你描述的行为是 Python 3 的,其中“str”s 已经是 unicode 对象。
-
谢谢你们。它在解码字符串时起作用。所以代码是这样的: import re pattern = '/[а-я]+/[а-я]+'.decode('utf-8') text = '/йцбйц/бйцбц'.decode('utf-8 ') re.search(模式,文本)
-
哦,好的,正确,我刚刚在 Python 2.x 中尝试过, decode() 是 OP 需要的。
标签: python regex python-2.7 unicode