Python 如何搜索匹配的字符串,然后提取后面的字符串和冒号

Python 如何搜索匹配的字符串,然后提取后面的字符串和冒号,python,regex,web-scraping,beautifulsoup,pattern-matching,Python,Regex,Web Scraping,Beautifulsoup,Pattern Matching,我不熟悉Python和web抓取,所以如果问题太简单,我道歉 我想从下面的示例BeautifulSoup对象中提取“分数”和“比率”(评级) import bs4 import re text = '<html><body>{"count":1,"results":[{"score":"2-1","MatchId":{"number":"889349"},"name":"Match","rating":{"rate":9.0}}],"performance":{"comm

我不熟悉Python和web抓取,所以如果问题太简单,我道歉

我想从下面的示例BeautifulSoup对象中提取“分数”和“比率”(评级)

import bs4
import re
text = '<html><body>{"count":1,"results":[{"score":"2-1","MatchId":{"number":"889349"},"name":"Match","rating":{"rate":9.0}}],"performance":{"comment":{}}}</body></html>'
page = bs4.BeautifulSoup(text, "lxml")
print type(page)
我找到了这个,但它给了我错误

tmp = page.findAll(text = lambda(x): x.lower.index('score') != -1)
print(tmp)

AttributeError: 'builtin_function_or_method' object has no attribute 'index'

我做错了什么?提前谢谢

这是一系列协议的三分之二。您可以使用beautifulsoup查找正文文本,并使用json对其进行解码。然后你有一些python指令和列表要完成

>>> import json
>>> import bs4
>>> import re
>>> text = '<html><body>{"count":1,"results":[{"score":"2-1","MatchId":{"number":"889349"},"name":"Match","rating":{"rate":9.0}}],"performance":{"comment":{}}}</body></html>'
>>> page = bs4.BeautifulSoup(text, "lxml")
>>> 
>>> data = json.loads(page.find('body').text)
>>> for result in data["results"]:
...     print(result["score"], result["rating"]["rate"])
... 
2-1 9.0
>>> 
导入json >>>进口bs4 >>>进口稀土 >>>text={“count”:1,“results”:[{“score”:“2-1”,“MatchId”:{“number”:“889349”},“name”:“Match”,“rate”:{“rate”:9.0}}],“performance”:{“comment”:{} >>>page=bs4.BeautifulSoup(文本,“lxml”) >>> >>>data=json.load(page.find('body').text) >>>对于数据中的结果[“结果”]: ... 打印(结果[“分数”]、结果[“评分”][“评分”]) ... 2-1 9.0 >>>
尝试使用
x.lower()
而不是x.lower。同时使用
JSON
解析器!谢谢你们的时间,伙计们!工作很有魅力!今天学到了一些新东西。谢谢@tdelaney!
>>> import json
>>> import bs4
>>> import re
>>> text = '<html><body>{"count":1,"results":[{"score":"2-1","MatchId":{"number":"889349"},"name":"Match","rating":{"rate":9.0}}],"performance":{"comment":{}}}</body></html>'
>>> page = bs4.BeautifulSoup(text, "lxml")
>>> 
>>> data = json.loads(page.find('body').text)
>>> for result in data["results"]:
...     print(result["score"], result["rating"]["rate"])
... 
2-1 9.0
>>>