ValueError:以10为底的int()的无效文字:'5df1170a921ee283d8529aa3'

时间:2019-12-18 11:24:42

标签: python angular api

我正在尝试从json书籍中检索一本书。检索单本书时,我在粗体行上收到此Value Error消息。 错误- show_all_books     page_num = int(request.args.get('pn')) ValueError:以10为底的int()的无效文字:'5df1170a921ee283d8529aa3'

@app.route("/api/v1.0/books", methods=["GET"])
def show_all_books():
   page_num, page_size = 1, 10
if request.args.get('pn'):
    ***page_num = int(request.args.get('pn'))***
if request.args.get('ps'):
    page_size = int(request.args.get('ps'))
page_start = (page_size * (page_num - 1))

2 个答案:

答案 0 :(得分:1)

您收到此错误,是因为您无法将字符串转换为整数,因为它包含不允许使用的字符:

int('5df1170a921ee283d8529aa3')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '5df1170a921ee283d8529aa3'

如果您尝试输入数字:

int('1231')
1231

因此,我认为问题在于您在get('pn')中收到的数据。 int()函数的默认基数为10,但是您可以使用十六进制基数来实现:

int('5df1170a921ee283d8529aa3', 16)
29073565845337865796180941475L

答案 1 :(得分:0)

由于出现错误,因为传递给函数的字符串不能表示为整数。 例如,如果您要这样做:

int('abc')

您将得到相同的错误,因为字符串abc不能表示为整数。