【问题标题】:How to search unicode string in python如何在python中搜索unicode字符串
【发布时间】: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


【解决方案1】:

谢谢你们。它在解码字符串时起作用。所以代码是这样的:

import re 
pattern = '/[а-я]+/[а-я]+'.decode('utf-8') 
text = '/йцбйц/бйцбц'.decode('utf-8') 
re.search(pattern, text)

【讨论】:

    猜你喜欢
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 2011-07-08
    • 1970-01-01
    • 2014-06-14
    • 2016-07-04
    相关资源
    最近更新 更多