我是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 -*-
。
非常感谢所有
答案 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'