如何处理Python中的带`u''`的数字?

1 投票
3 回答
2728 浏览
提问于 2025-04-18 05:42

我正在使用NetworkX来读取一些数据。这些数据的格式像是u1、u12。比如,在这个库里,有一个列表:

networkx_lista = [u'1', u'3', u'12'].

现在我想查找u3,但我只有一个整数c=3。

有没有什么函数可以把c转换成u'3'呢?比如:

networkx_lista.search(unicode(c))

我试过chr()unichr(),但它们似乎只会生成'\x03'或者u'\x03',而不是u3

3 个回答

0

你可以把整数转换成字符串,然后在列表中查找它。比如,下面这段代码会输出'True'。

num = 3
print str(num) in networkx_lista
3

你现在手里的是一些unicode字符串,而不是数字。你可以用 int() 把这些字符串转换成数字,或者把数字转换成unicode字符串。

如果你想把数字变成字符串,unicode()str() 都可以用,因为Python会自动处理这些值,让它们可以比较字节字符串和Unicode值。

在这里,你可以使用 any() 或者 in 来检查某个值是否在列表里:

any(int(v) == c for v in networkx_lista)

或者

unicode(c) in networkx_lista
str(c) in networkx_lista

如果你不需要列表里的内容是unicode字符串,你可以把列表里的内容一次性转换成整数,这样就可以省去很多麻烦:

networkx_lista = [int(x) for x in networkx_lista]

这样你就不需要每次检查的时候都去转换 c 或者列表里的内容了。

6

这些数据是以字符串的形式表示的,而不是数字。这里的u只是表示这是一个unicode字符串。你可以试试这个:

'3' in [u'1', u'3', u'12']
=> True

如你所见,我把数字3当作了一个字符串'3'来处理。或者,你可以把输入的字符串列表转换成整数列表:

networkx_lista = [u'1', u'3', u'12']
networkx_lista = [int(x) for x in networkx_lista]

现在你可以直接在列表中查找整数值了:

3 in networkx_lista
=> True

撰写回答