hi,
I have a code with a dcc.Input and html.Datalist. Well. When I introduce “lion” in input all is correct, but when I introduce "lion " ( with space ) the result is different and would be the same. why?
import dash
import dash_html_components as html
import dash_core_components as dcc
import dash_bootstrap_components as dbc
import pandas as pd
from dash.dependencies import Input, Output, State
data_aux = pd.DataFrame()
data_aux["Nombre"] = ['Lionel Messi', 'Isaac Capriglione', 'Giammaria Maglione', 'Markus Palionis', 'Maxime Allione', 'Lionel Mallein', 'Paolo Ghiglione', 'Paolo Ghiglione', 'Elion Minaj', 'Lionel Carole', 'Lionn', 'Lion Kalentjev', 'Million Manhoef', 'Elion Spahija', 'Giorgio Lionetti', 'Antonio Tartaglione', 'Federico Coniglione', 'Saul Castiglione', 'Domenico Zampaglione', 'Lionnel Yakam']
app = dash.Dash(__name__)
app.layout = html.Div(
children=[
dcc.Input(id='input-1',
type='text',
list='list',
),
html.Datalist(
id='list',
children=[]
),
html.Div(id="kk")
]
)
@app.callback(
Output('kk','children'),
[Input('list','children')]
)
def kk1(children):
return children
@app.callback(
Output('list','children'),
[Input('input-1','value')]
)
def kk(inputvalue):
if inputvalue:
data_aux1 = data_aux.copy()
for i in inputvalue.split(" "):
data_aux1 = data_aux1[data_aux1['Nombre'].str.contains("(?i){}".format(str(i)))==True]
return [html.Option(value=word) for word in data_aux1["Nombre"][0:20].to_list()]
if __name__ == "__main__":
app.run_server()
Nevertheless, if you run this code in line command (the same as above), works! I dont undertand what happen:
import pandas as pd
data_aux = pd.DataFrame()
data_aux["Nombre"] = ['Lionel Messi', 'Isaac Capriglione', 'Giammaria Maglione', 'Markus Palionis', 'Maxime Allione', 'Lionel Mallein', 'Paolo Ghiglione', 'Paolo Ghiglione', 'Elion Minaj', 'Lionel Carole', 'Lionn', 'Lion Kalentjev', 'Million Manhoef', 'Elion Spahija', 'Giorgio Lionetti', 'Antonio Tartaglione', 'Federico Coniglione', 'Saul Castiglione', 'Domenico Zampaglione', 'Lionnel Yakam']
data_aux1 = data_aux.copy()
inputvalue = "lion "
for i in inputvalue:
data_aux1 = data_aux1[data_aux1['Nombre'].str.contains("(?i){}".format(i))==True]
print(data_aux1)```