使用Python在字符串中查找unicode字符

时间:2017-04-28 08:46:13

标签: python string python-2.7 unicode

我是python的新手,也许这个问题不是那么聪明,但无论如何我无法解决这个小问题。 像往常一样,例如在条件语句中,为了在字符串中找到一些字符或子字符串,我用来编写以下代码:

if 'a' in myvariable:
    <do something>

但是,如果字符或子字符串是具有高代码点的unicode字符,例如⸣(半方括号),则会出现以下错误: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)

我理解这个问题,但我无法弄清楚如何解决它。

当然我正在使用python 2.7

修改

这是我的真实迭代,其中有一些说明如下:

if '⸣' not in myvariable:
    newvariable = 100.0

我必须测试是否&#39;⸣&#39;不是myvariable:myvariable类型已经<type 'unicode'>,而unicode字符&#39;⸣&#39; (Unicode代码点U + 2E23)超出ASCII字符范围。 此外,脚本已经使用了编译指示# -*- coding: utf-8 -*-

非常感谢所有

4 个答案:

答案 0 :(得分:2)

这就是在Python 3中删除字节字符串到Unicode字符串的隐式转换的原因。

你几乎就在那里,文件开头有#coding行。只需将一个微小的更改转换为Unicode字符串:

if u'⸣' not in myvariable:
    newvariable = 100.0

您可能在我的系统上遇到该特定字符的问题,因此您可以使用等效的转义序列:

if u'\u2e23' not in myvariable:
    newvariable = 100.0

答案 1 :(得分:0)

使用python 3? 我想你可以导入文本模块吗?

答案 2 :(得分:0)

您可以将unicode声明为:var = u'e&#39;并执行以下操作var.find('a')以查找unicode变量中的字符。

希望这有效!!

答案 3 :(得分:0)

您还可以尝试更改文件编码类型以使其正常工作。 请参阅此文档: https://www.python.org/dev/peps/pep-0263/

您可以将文件的编码类型更改为UTF-8,方法是将其添加到源文件中:

# -*- coding: utf-8 -*-

实施例

# -*- coding: utf-8 -*-
b = '⸣fdsf'
if 'd' in b:
    print 'd'