本文主要是介绍调用Web接口产生的invalid literal for int()错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
错误产生
调用新浪股票的按节点(如 hs_a
)获取股票总数接口,然后转换为整型,但是返回的是字符串,导致转换失败。
报 invalid literal for int() with base 10: '"5349"'
错误。
出错代码如下:
import requestsdef get_stock_count(node='hs_a'):url = f'https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeStockCount?node={node}'r = requests.get(url)return int(r.text)print(get_stock_count())
问题解决
显然,这是由于接口返回的是 “5349” 字符串,除了数字本身外,还有双引号,这样,我们需要从中提取数值,或去掉引号后再做转换。
以采用正则表达式提取数值为例:
import requests
import redef extract_numbers(text):# 使用正则表达式匹配所有数字pattern = r'\d+'# 在文本中查找所有匹配项matches = re.findall(pattern, text)return matchesdef get_stock_count(node='hs_a'):url = f'https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeStockCount?node={node}'r = requests.get(url)return extract_numbers(r.text)[0]print(get_stock_count())
执行结果为:5349
这篇关于调用Web接口产生的invalid literal for int()错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!