Python - 如何在变量的Unicode字符上执行字符串查找?
这个可以用
s = 'jiā'
s.find(u'\u0101')
我该怎么做类似这样的事情:
s = 'jiā'
zzz = '\u0101'
s.find(zzz)
因为我现在在用一个变量,我该怎么表示这个变量所代表的字符串是Unicode格式的呢?
3 个回答
0
在某些情况下(我不具体说明什么时候),你还需要对你要查找的字符串进行解码:
s.decode("utf-8").find(u"\u0101")
3
你在帖子中提到的 zzz
是一个普通的 str
对象,而不是 unicode
对象,所以没办法让它看起来像是其他类型的东西。不过,你可以通过指定编码,把 str
对象转换成 unicode
对象:
s.find(zzz.decode("utf-8"))
把 utf-8
替换成这个字符串实际使用的编码。
注意,在你的例子中,
zzz = '\u0101'
zzz
是一个长度为 6 的普通字符串。想要修正这个错误的字符串字面量没有简单的方法,除了使用一些小技巧,比如:
ast.literal_eval("u'" + zzz + "'")
8
既然我现在在用一个变量,我该怎么表示这个变量代表的字符串是Unicode格式的呢?
首先,你需要把它定义为一个Unicode字符串。
zzz = u"foo"
或者,如果你已经有一个用其他编码的字符串,你可以把它转换成Unicode(如果这个字符串不是ASCII编码的,你需要指定原来的编码)。
zzz = unicode(zzz, encoding="latin1")
另外,你也可以直接使用Python 3,因为在Python 3中,所有字符串默认都是Unicode格式的。