我正在使用NetworkX读取一些数据。数据格式类似于u 1
,u 12
。例如,在库中,有一个列表:
networkx_lista = [u'1', u'3', u'12'].
现在我想搜索你的3
,但我只有一个c = 3的整数。
是否有可以将c
转换为u'3'的函数?像:
networkx_lista.search(unicode(c))
我尝试了chr()
和unichr()
,它们似乎只生成'\x03'
或u'\x03'
,而不是3
。
答案 0 :(得分:5)
数据表示为字符串,而不是数字。 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
答案 1 :(得分: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
或内容的麻烦。
答案 2 :(得分:0)
您可以将int转换为字符串并在列表中搜索它。例如,下面的代码将打印'True'
num = 3
print str(num) in networkx_lista