Конвертировать данные Unicode в int в 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'>
но я продолжаю получать type
из limit
как unicode
, который вызывает ошибку из запроса! Я конвертирую Unicode в Int, но почему он не конвертирует?? Пожалуйста помоги!!!
2 ответа
int(limit)
возвращает значение, преобразованное в целое число, и не меняет его на месте при вызове функции (что вы и ожидаете).
Сделайте это вместо этого:
limit = int(limit)
Или при определении limit
:
if 'limit' in user_data :
limit = int(user_data['limit'])
В Python целые числа и строки являются неизменяемыми и передаются по значению. Вы не можете передать строку или целое число функции и ожидать, что аргумент будет изменен.
Так что конвертировать строку 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
Но вам не нужно это на самом деле. (может быть, иногда, когда вы работаете с рекурсиями и вам нужно передать какое-то изменяемое состояние).