#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)