如何处理Python中的带`u''`的数字?
我正在使用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