我试图从guildwars API读取服务器状态。为了匹配服务器名称,然后是一个偶然的语言说明符和一个“,\ n我打算与。*匹配。然后跟随人口。但不是直接匹配第一次出现的人口而是匹配最后一个有人可以告诉我为什么(以及如何解决这个问题)?
编辑:我找到了解决方法。将。*替换为。{,20}就可以了。
relevant part of the API
"name": "Riverside [DE]",
"population": "Full"
with urlopen('https://api.guildwars2.com/v2/worlds?ids=all') as api:
s = api.read()
s = s.decode('utf-8')
search = re.search(r'''Riverside.*"population": "''',s,re.S)
print(search)
s = s[search.span()[1]:]
state = re.search(r'[a-zA-Z]*',s)
print(state)
答案 0 :(得分:1)
有两件事
import json with urlopen('https://api.guildwars2.com/v2/worlds?ids=all') as api: s = api.read() s = s.decode('utf-8') jsondata = json.loads(s) filtered_data = filter(lambda a: str(a["name"]).find("Riverside") > -1,jsondata) print(filtered_data[0]["population"])