Estoy tratando de implementar una función de autocompletar en una aplicación de matraz donde quiero que cuando el usuario ingrese caracteres, aparecerá una ventana con opciones con símbolos de acciones.
Mi actual/búsqueda html es básica intencionalmente porque quiero depurar a medida que avanzo
def search(): from ftplib import FTP directory = 'symboldirectory' filenames = ('otherlisted.txt', 'nasdaqlisted.txt') ftp = FTP('ftp.nasdaqtrader.com') ftp.login() ftp.cwd(directory) for item in filenames: ftp.retrbinary('RETR {0}'.format(item), open(item, 'wb').write) ftp.quit() # Create pandas dataframes from the nasdaqlisted and otherlisted files. nasdaq_exchange_info = pd.read_csv('nasdaqlisted.txt', '|') other_exchange_info = pd.read_csv('otherlisted.txt', '|') nasdaq_exchange_info=nasdaq_exchange_info.query('ETF == ETF') nasdaq_exchange_info = nasdaq_exchange_info.rename(columns={'Security Name': 'Security_Name'}) nasdaq_exchange_info=nasdaq_exchange_info.query("Security_Name.str.contains(request.args.get('q'), case=False)") print(nasdaq_exchange_info) return render_template("search.html", nasdaq_exchange_info=nasdaq_exchange_info)mi problema esta en
nasdaq_exchange_info=nasdaq_exchange_info.query("Security_Name.str.contains(request.args.get('q'), case=False)") print(nasdaq_exchange_info)Obtengo el nombre 'solicitud' no está definido error (si ingreso Security_Name.str.contains('apple', case=False) por ejemplo, se imprimirá). También probé todas las variaciones que se me ocurrieron, pero obtengo error de sintaxis.
Mi html se ve así:
<body> <input autocomplete="off" autofocus placeholder="Query" type="text"> <ul></ul> <script> let input = document.querySelector('input'); input.addEventListener('input', async function() { let response = await fetch('/search?q=' + input.value); let nasdaq_exchange_info = await response.json(); let html = ''; for (let symbol in nasdaq_exchange_info) { let ticker = nasdaq_exchange_info[Security_Name].symbol; html += '<li>' + ticker + '</li>'; } document.querySelector('ul').innerHTML = html; }); </script> </body>¿Hay alguna forma conocida de implementar que el usuario escriba q y busque en la base de datos? Sé cómo hacerlo en una base de datos usando sql pero estoy tratando de evitar eso.
intente aplicar fstrings así:
nasdaq_exchange_info=nasdaq_exchange_info.query(f"Security_Name.str.contains({request.args.get('q')}, case=False)")