我是Python的新手,也许这个问题不是那么聪明,但是无论如何我无法解决这个小问题。像往常一样,例如,在条件语句中,要在字符串中找到一些字符或子字符串,我用来编写以下代码:
if 'a' in myvariable:
<do something>
但是,如果字符或子字符串是具有高代码点的Unicode字符,例如A⸣(半平方支架(,我会收到以下错误: 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
我必须测试是否不在myvaria中:myVaria -able类型已经是 <type 'unicode'>
,而unicode字符'⸣'(Unicode Code Point u 2e23(不超出ASCII字符范围。此外,脚本已经使用Pragma # -*- coding: utf-8 -*-
。
非常感谢所有
这就是为什么在Python 3中删除了字节字符串向Unicode字符串的隐式转换。
您快到了,在文件开始时,#coding
行。只有一个微小的更改将您的测试字符变成一个Unicode字符串:
if u'⸣' not in myvariable:
newvariable = 100.0
您可能像我在系统上一样遇到特定角色,因此您可以使用等效的逃生序列:
if u'u2e23' not in myvariable:
newvariable = 100.0
您可以将Unicode声明为Eg:var = u'e
',然后执行以下操作var.find('a')
以在Unicode变量中找到字符。
希望这有效!
您也可以尝试更改文件编码类型以使其正常工作。请参阅此文档:https://www.python.org/dev/peps/pep-0263/
您可以通过将其添加到源文件中来将文件的编码类型更改为UTF-8:
# -*- coding: utf-8 -*-
示例
# -*- coding: utf-8 -*-
b = '⸣fdsf'
if 'd' in b:
print 'd'
与python 3一起工作?😃我认为您可以导入文本否的模块?