在python中将Unicode数据转换为int

时间:2013-05-10 06:33:30

标签: python unicode python-2.7 casting

我从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'>

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

2 个答案:

答案 0 :(得分:50)

int(limit)返回转换为整数的值,并且在调用函数时不会对其进行更改(这是您期望的那样)。

请改为:

limit = int(limit)

或者在确定limit

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

答案 1 :(得分:7)

在python中,整数和字符串是immutable并且是passed 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

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