首页 > 解决方案 > 2个选择框第一个带有字母,第二个带有以该字母开头的名称

问题描述

2个选择框第一个带有字母,第二个带有以该字母开头的名称

1-我使用以下代码创建 CSV 文件名列表

path = "/home/zhamane/streamlit/Streamlit_tutorials/data"
li = [os.path.splitext(filename)[0] for filename in os.listdir(path)]

例如,我在“数据”文件夹中有 3 个文件(all_stocks_5yr.csv、auto-mpg.csv、clean_auto_mpg.csv)它将返回一个列表

[all_stocks_5yr, auto-mpg, clean_auto_mpg]

2-我使用来自 stremlit 的选择框来选择那些文件

select_event = st.sidebar.selectbox('Choisir des indicateurs', li)

但我想创建 2 个选择框第一个,其中包含从每个文件名的初始字母创建的字母列表(在我们的示例中)

[a, c]

当我选择例如 a 时,第二个列表将显示所有以 a 开头的名称

3-之后我想读取用熊猫选择的文件

df = pd.read_csv("path/{select_event}.csv")

标签: python-3.xstreamlit

解决方案


我不确定你要的是什么。我假设您正在尝试过滤您的输入?我想出了以下解决方案。

import streamlit as st
list_of_files = ["all_stocks_5yr", "auto-mpg", "clean_auto_mpg"]

st.write(list_of_files)

def should_include(item, search_term, criteria):
    if criteria == "starts with":
        return item.startswith(search_term)
    elif criteria == "contains":
        return search_term in item

search_term = st.text_input("Filter")

option = st.radio("choose filter option", ("starts with", "contains"))

new_items = [item for item in list_of_files if should_include(item, search_term, criteria = option)]
st.multiselect("Select files", list_of_files, new_items)

在此处输入图像描述


推荐阅读