【问题标题】:Convert Unicode data to int in python在python中将Unicode数据转换为int
【发布时间】:2013-05-04 19:07:56
【问题描述】:

我从 url 获取值传递为:

user_data = {}
if (request.args.get('title')) :
    user_data['title'] =request.args.get('title')
if(request.args.get('limit')) :
    user_data['limit'] =    request.args.get('limit')

然后将其用作

if 'limit' in user_data :
    limit = user_data['limit']
conditions['id'] = {'id':1}
int(limit)
print type(limit)
data = db.entry.find(conditions).limit(limit)

打印:<type 'unicode'>

但我不断将limittype 设为unicode,这会引发查询错误!!我正在将 unicode 转换为 int 但为什么它不转换? 请帮忙!!!

【问题讨论】:

    标签: python unicode python-2.7 casting


    【解决方案1】:

    int(limit) 返回转换为整数的值,并且不会在您调用函数时更改它(这是您所期望的)。

    改为这样做:

    limit = int(limit)
    

    或者在定义limit时:

    if 'limit' in user_data :
        limit = int(user_data['limit'])
    

    【讨论】:

    • +1 doesn't change it immediately 表示它不会通过引用改变它。
    • @Jared 我会添加这个,谢谢:)。我知道我的措辞在某些方面并不完美:p
    • @MANCHUCK 别担心 :)
    【解决方案2】:

    在python中,整数和字符串是immutablepassed by value。您不能将字符串或整数传递给函数并期望修改参数。

    所以要将字符串limit="100" 转换为数字,你需要这样做

    limit = int(limit) # will return new object (integer) and assign to "limit"
    

    如果你真的想绕过它,你可以使用一个列表。列表在 python 中是可变的;当你传递一个列表时,你传递的是参考,而不是副本。所以你可以这样做:

    def int_in_place(mutable):
        mutable[0] = int(mutable[0])
    
    mutable = ["1000"]
    int_in_place(mutable)
    # now mutable is a list with a single integer
    

    但你不应该真的需要它。 (也许有时当您使用递归并需要传递一些可变状态时)。

    【讨论】:

      猜你喜欢
      • 2015-09-14
      • 1970-01-01
      • 2013-07-11
      • 2014-10-28
      • 2011-06-12
      • 2014-04-03
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      相关资源
      最近更新 更多