San*_*hra 27 python unicode casting python-2.7
我从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')
Run Code Online (Sandbox Code Playgroud)
然后用它作为
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)
Run Code Online (Sandbox Code Playgroud)
它打印: <type 'unicode'>
但我不断收到type的limit是unicode,从查询产生一个错误!我正在将unicode转换为int,但为什么不转换?请帮忙!!!
Ter*_*ryA 51
int(limit) 返回转换为整数的值,并且在调用函数时不会对其进行更改(这是您期望的).
改为:
limit = int(limit)
Run Code Online (Sandbox Code Playgroud)
或者在确定时limit:
if 'limit' in user_data :
limit = int(user_data['limit'])
Run Code Online (Sandbox Code Playgroud)
在python中,整数和字符串是不可变的,并按值传递.您不能将字符串或整数传递给函数,并期望修改参数.
因此,要将字符串转换limit="100"为数字,您需要这样做
limit = int(limit) # will return new object (integer) and assign to "limit"
Run Code Online (Sandbox Code Playgroud)
如果你真的想要解决它,你可以使用一个列表.列表在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
Run Code Online (Sandbox Code Playgroud)
但你真的不需要它.(有时当你使用递归并且需要传递一些可变状态时).
| 归档时间: |
|
| 查看次数: |
99429 次 |
| 最近记录: |