Как могут 2 поля выбора 1-е с алфавитами и 2-е с именами, начинающимися с этого алфавита

#python-3.x #streamlit

Вопрос:

Как могут 2 поля выбора 1-е с алфавитами и 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 поля выбора 1-го со списком алфавитов, созданных из исходного алфавита для каждого имени файла (в нашем примере).

 [a, c]
 

и когда я выберу, например, 2-й список, мне будут показаны все имена, начинающиеся с

3 — после этого я хочу прочитать файл, выбранный с помощью panda

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

Комментарии:

1. Я не понимаю, о чем вы спрашиваете. Вы пытаетесь отфильтровать поле выбора с помощью термина поиска/фильтра?

Ответ №1:

Я не уверен, о чем вы просите. Я предполагаю, что вы пытаетесь отфильтровать свой ввод? Я пришел к следующему решению.

 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)
 

введите описание изображения здесь