python - 过滤嵌入嵌套列表的字典
问题描述
我希望通过“abv”值过滤以下内容(仅使用范围的下限。例如,如果“ABV:4.5-5.5%”我将使用 4.5 作为 ABV 的值)和“cuisine” . 到目前为止,这是我的代码:
import requests
from bs4 import BeautifulSoup
import pandas as pd
import csv
from html.parser import HTMLParser
r = requests.get("https://www.webstaurantstore.com/article/27/different-types-of-
beers.html")
soup = BeautifulSoup(r.text, "html.parser")
beer_titles = soup.find_all('h3')[3:-1]
beer_titles_list = []
for b in beer_titles:
result = b.text.strip()
beer_titles_list.append(result)
helpme = soup.find_all('p')
def __init__(self):
helpme().__init__()
helpme.reset()
helpme.fed = []
helpme_clean = []
for d in helpme:
result = d.text.strip()
helpme_clean.append(result)
attributes = helpme_clean[36:-20]
helpme_clean = []
for d in helpme:
result = d.text.strip()
helpme_clean.append(result)
attributes = helpme_clean[36:-20]
attributes
attributes = attributes[:252]
del attributes[231]
del attributes[205]
del attributes[204]
del attributes[203]
del attributes[200]
del attributes[191]
del attributes[170]
del attributes[169]
del attributes[168]
del attributes[144]
del attributes[126]
del attributes[125]
del attributes[124]
del attributes[118]
del attributes[107]
del attributes[81]
del attributes[80]
del attributes[79]
del attributes[68]
del attributes[67]
del attributes[66]
del attributes[45]
del attributes[44]
del attributes[43]
del attributes[22]
del attributes[21]
del attributes[20]
n = 5
main_list = [attributes[i:i+n] for i in range(0, len(attributes), n)]
main_dict = dict(zip(beer_titles_list, main_list))
main_dict
目标是获取用户输入(ABV% 偏好和搭配的菜肴)并找到可供选择的啤酒风格的建议。我正在尝试设置一个过滤系统,以便仅返回与 ABV% 偏好和美食配对相匹配的啤酒。任何提示将非常感谢。
提前非常感谢大家!
解决方案
'4.5'
匹配of最直接的思路'ABV: 4.5-5.5%'
就是使用正则表达式。这是代码:
import re
string='ABV: 4.5-5.5%'
output=re.search(r'([\d\.]+)\-[\d\.]+',string)[1]
至于删除列表中的乘法值,使用列表推导是一种简单的方法:
new_list=[old_list[i] for i in range(len(old_list)) if not i in indices]
例如:
import numpy as np
old_list=np.random.random(10)
indices=np.random.choice(np.arange(0,10),5)
new_list=[old_list[i] for i in range(len(old_list)) if not i in indices]
print('The original list is:',list(old_list))
print('The indices to be removed are:',list(indices))
print('The new list is:',list(new_list))
输出:
The original list is: [0.9233779986812494, 0.47976112127600334, 0.2669764806705126, 0.8598525413490794, 0.03257522197544993, 0.472960144751734, 0.07720026239677213, 0.22969097769323488, 0.3039956214047107, 0.5079366193702746]
要删除的索引是:[2, 0, 1, 7, 3]
新列表为:[0.03257522197544993, 0.472960144751734, 0.07720026239677213, 0.3039956214047107, 0.5079366193702746]
推荐阅读
- java - logcat 没有错误,但 Firebase 数据库不工作,没有写入任何提交的数据
- reactjs - 找不到变量:实现 Redux 后反应
- google-sheets - 仅当总数大于0时,如何在另一张纸上输出多个单元格的总和?
- ruby-on-rails - '预期在:平面命名空间'Rails 错误,而 db:在 Apple M1 处理器 macOS BigSur 11.4 中重置
- swiftui - SwiftUI - TextField 货币输入作为用户类型
- android - 如何制作虚拟电源按钮
- excel - 如何匹配二维数组的第一列
- c - 如何在代码中将指针变量 *b[3] 与数组 a[3] 进行比较?
- git - Git一直要求我输入用户名和密码
- python - 在云端无限运行python脚本