17
for k,v in targets.iteritems():
    price= str(v['stockprice'])

    Bids = str(u''.join(v['OtherBids']))
    Bids = Bids.split(',')

    # create a list of unique bids by ranking
    for a, b in zip(float(price), Bids):
        try:
            del b[next(i for i, e in enumerate(b) if format(e, '.4f')  == a)]
        except StopIteration:
            pass

我正在从我的字典中提取数据,但似乎所有这些数据都是 unicode。我怎样才能摆脱 unicode 的废话?

4

1 回答 1

22

我认为您的代码正在给您错误消息,TypeError: zip argument #1 must support iteration。由于表达式,您会收到此错误zip(float(price), Bids)。这个简化的代码演示了错误:

>>> price = str(u'12.3456')
>>> bids = ['1.0', '2.0']
>>> zip(float(price), bids)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: zip argument #1 must support iteration

Python 2.xzip()内置库函数要求其所有参数都是可迭代的。float(price)不是可迭代的。

如果要使元组float(price)与数组的每个元素相结合Bids,可以itertools.repeat()在第一个参数表达式中使用。

>>> import itertools
>>> price = str(u'12.3456')
>>> bids = ['1.0', '2.0']
>>> zip(itertools.repeat(float(price),len(bids)), bids)
[(12.345599999999999, '1.0'), (12.345599999999999, '2.0')]

我看不出您对 Unicode 数据类型的使用与TypeError.

于 2012-12-27T10:56:36.803 回答