如何用python中的'u'`来处理数字?

时间:2014-05-07 16:34:39

标签: python unicode

我正在使用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

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