Python - 如何在作为变量的Unicode字符上执行字符串查找?

时间:2011-11-11 16:39:28

标签: python unicode

这有效

s = 'jiā'
s.find(u'\u0101')

我该怎么做:

s = 'jiā'
zzz = '\u0101'
s.find(zzz)

由于我现在使用变量,如何指示变量表示的字符串是Unicode?

3 个答案:

答案 0 :(得分:7)

  

由于我现在使用变量,如何指示变量表示的字符串是Unicode?

首先将其定义为Unicode字符串。

zzz = u"foo"

或者,如果您已经在某些其他编码中使用了字符串,则将其转换为Unicode(如果字符串是非ASCII,则必须指定原始编码)。

zzz = unicode(zzz, encoding="latin1")

或者使用Python 3,其中所有字符串都是Unicode。

答案 1 :(得分:3)

你帖子中定义的

zzz是一个普通的str对象,而不是unicode个对象,所以没有办法表明它实际上并不是什么东西。 。但是,您可以通过指定编码将str对象转换为unicode对象:

s.find(zzz.decode("utf-8"))

通过编码字符串的任何编码来替换utf-8

请注意,在您的示例中

zzz = '\u0101'

zzz是一个长度为6的普通字符串。之后没有简单的方法可以修复这个错误的字符串文字,除了

之外的黑客行为
ast.literal_eval("u'" + zzz + "'")

答案 2 :(得分:0)

在某些情况下(我忽略了),您还必须解码您正在查找的字符串:

s.decode("utf-8").find(u"\u0101")