在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'>

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

【问题讨论】:

【参考方案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中,整数和字符串是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 字符串 [重复]

有一种方法可以在 python 中将字符串转换为 unicode 字符串?

Java中将字符串与unicode的相互转换工具类

在 Python 中将 Unicode URL 转换为 ASCII(UTF-8 百分比转义)的最佳方法?