在python中获取冒号之后和逗号之前的值[重复]
Posted
技术标签:
【中文标题】在python中获取冒号之后和逗号之前的值[重复]【英文标题】:Get a value after colons and before comma in python [duplicate] 【发布时间】:2022-01-06 18:42:15 【问题描述】:我需要创建一个从网站和国家名称获取文本的 API。 然后它告诉我这个国家的人口是上升还是下降或没有变化。 但我并没有被困在如何从这么长的字符串中获取人口数量。
字符串是这样的:
"googleMaps":"https://goo.gl/maps/6UY1AH8XeafVwdC97","openStreetMaps":"https://www.openstreetmap.org/relation/1473946","population":9216900,"gini":"2016":39.0,"fifa":"ISR","car":"signs":["IL"],"side":"right"
我只想从那里取出数字“9216900”并将其保存为 int。
我尝试使用 json.loads 但我收到此错误:
Traceback(最近一次调用最后一次): 文件“G:/HackerU/Python/Challenges/Population/main.py”,第 12 行,在 load_json = json.loads(json_data)[:-1][2:] 加载中的文件“C:\Users\netanell\AppData\Local\Programs\Python\Python38-32\lib\json_init_.py”,第 357 行 返回 _default_decoder.decode(s) 解码中的文件“C:\Users\netanell\AppData\Local\Programs\Python\Python38-32\lib\json\decoder.py”,第 337 行 obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 文件“C:\Users\netanell\AppData\Local\Programs\Python\Python38-32\lib\json\decoder.py”,第 355 行,在 raw_decode 从 None 提高 JSONDecodeError("Expecting value", s, err.value) json.decoder.JSONDecodeError:预期值:第 1 行第 1 列(字符 0)
这是当前代码:
import bs4
import urllib.request
import json
country = input("Country: ")
# Getting updated list and saving it as "json_data"
link = 'https://restcountries.com/v3.1/name/' + country
webpage = str(urllib.request.urlopen(link).read())
soup = bs4.BeautifulSoup(webpage, "html.parser")
json_data = soup.get_text()
loaded_json = json.loads(json_data)[:-1][2:]
population_number = loaded_json['population']
print(population_number)
【问题讨论】:
是保存为字符串还是dict
?
您的数据采用极为常见的 JSON 格式,您必须了解这些格式才能进行 Web 编程。使用库解析数据后(Python 包括标准库中的支持),您处理生成的数据与处理任何其他嵌套列表和/或字典的方式完全相同。 (如果您不知道如何在 Python 中使用 dict
,那么您需要遵循教程并学习基础知识;在跑步之前先走。)
【参考方案1】:
此字符串存储为 JSON(javascript 对象表示法),因此您可以非常简单地将其解析为 python。见下文
import json
string = "..." # Your string
loaded_json = json.loads(string)
population_number = loaded_json['population']
print(population_number)
这会将文本转换为 python 字典,允许您访问它。
【讨论】:
嗨,你能看到编辑吗?以上是关于在python中获取冒号之后和逗号之前的值[重复]的主要内容,如果未能解决你的问题,请参考以下文章