在python中将Unicode数据转换为int
Posted
技术标签:
【中文标题】在python中将Unicode数据转换为int【英文标题】:Convert Unicode data to int in python 【发布时间】: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'>
但我不断将limit
的type
设为unicode
,这会引发查询错误!!我正在将 unicode 转换为 int 但为什么它不转换?
请帮忙!!!
【问题讨论】:
【参考方案1】:int(limit)
返回转换为整数的值,并且不会在您调用函数时更改它(这是您所期望的)。
改为这样做:
limit = int(limit)
或者在定义limit
时:
if 'limit' in user_data :
limit = int(user_data['limit'])
【讨论】:
+1doesn't change it immediately
表示它不会通过引用改变它。
@Jared 我会添加这个,谢谢:)。我知道我的措辞在某些方面并不完美:p
@MANCHUCK 别担心 :)【参考方案2】:
在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
但你不应该真的需要它。 (也许有时当您使用递归并需要传递一些可变状态时)。
【讨论】:
以上是关于在python中将Unicode数据转换为int的主要内容,如果未能解决你的问题,请参考以下文章
在python 3中将表情符号转换为Unicode,反之亦然
在 Python 中将 XML/HTML 实体转换为 Unicode 字符串 [重复]
在 Python 中将 XML/HTML 实体转换为 Unicode 字符串 [重复]