在python中将Unicode数据转换为int

2024-05-16 10:31:08 发布

您现在位置:Python中文网/ 问答频道 /正文

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

但是我一直把typelimit作为unicode,这会引起查询错误!!我正在将unicode转换为int,但为什么不转换呢?? 请帮忙!!!


Tags: inidurldatagetiftitlerequest
2条回答

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

请改为:

limit = int(limit)

或者在定义limit时:

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

在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

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

相关问题 更多 >