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

10 投票
3 回答
35376 浏览
提问于 2025-04-17 06:08

这个可以用

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格式的。

撰写回答