0 Daumen
434 Aufrufe

Ich versuche, die Daten aus einem DatePickerRange aus der dash_core_components-Bibliothek zu extrhaieren. Aber nachdem ich das unnötige Zeug entfernt habe, sagt mir der Compiler, dass es Reste gibt, die er nicht verwenden kann.

from dash.dependencies import Input, Output, State
import dash_core_components as dcc
import datetime as dt

import pickle

from ..server import app

@app.callback(
    # Output('output-container-button', 'children'),
    Output('articles', 'children'),
    [Input('button', 'n_clicks'),
    Input('my-date-picker-range', 'start_date_value'),
    Input('my-date-picker-range', 'end_date_value')],
    [State('input-box', 'value')])
def update_search(n_clicks, value, start_date_value, end_date_value):
    f = pickle.load(open("dashboard/data-mm/google-nlu-khazaradze.p", "rb"))
    # let's filter f according to value
    print(start_date_value)
    start_date = dt.datetime.strptime(start_date_value.split(' ')[0], '%Y-%m-%d')
    end_date = dt.datetime.strptime(end_date_value.split(' ')[0], '%Y-%m-%d')

Aber der Compiler antwortet mir:

File "C:\Users\antoi\Documents\Programming\richmond2\dashboard\callbacks\search.py", line 20, in update_search
start_date = dt.datetime.strptime(start_date_value.split(' ')[0], '%Y-%m-%d')
File "C:\ProgramData\Anaconda3\lib\_strptime.py", line 577, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
File "C:\ProgramData\Anaconda3\lib\_strptime.py", line 362, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: T11:55:55.226148
Hier ist das, was start_date_value enthalt:

2020-01-28T11:55:55.226148

Was dasselbe ist wie start_date.split(' ')[0]

Avatar von

1 Antwort

0 Daumen

Antwort mit KI erzeugt

Lösung des Problems

Das Problem, das du beschreibst, tritt auf, weil das Format, in dem das Datum und die Zeit in deinen Daten (start_date_value und end_date_value) vorliegen, nicht dem Format entspricht, das du beim Parsen angegeben hast. Deine Daten enthalten den Zeitstempel in einem ISO 8601-Format (2020-01-28T11:55:55.226148), aber du versuchst, sie mit %Y-%m-%d zu parsen, was nur das Datum ohne Zeit berücksichtigt. Der Fehler "unconverted data remains" tritt auf, weil nach dem Parsen des Datums noch ein Zeitstempel in deinen Daten vorhanden ist, den die Funktion nicht verarbeiten kann.

Eine Lösung besteht darin, das Datums- und Zeitformat so zu ändern, dass es das gesamte String verarbeiten kann oder einfach den Teil des Strings zu extrahieren, der dem von dir gewünschten Format entspricht. Da du jedoch nur am Datum interessiert zu sein scheinst, könntest du weiterhin nur das Datum extrahieren, musst aber sicherstellen, dass du es korrekt tust.

Im Folgenden findest du den korrigierten Code, der deine Anforderungen erfüllt:

python
from dash.dependencies import Input, Output, State
import dash_core_components as dcc
import datetime as dt

import pickle

from ..server import app

@app.callback(
    Output('articles', 'children'),
    [Input('button', 'n_clicks'), 
     Input('my-date-picker-range', 'start_date_value'),
     Input('my-date-picker-range', 'end_date_value')],
    [State('input-box', 'value')]
)
def update_search(n_clicks, start_date_value, end_date_value, value):
    f = pickle.load(open("dashboard/data-mm/google-nlu-khazaradze.p", "rb"))
    # let's filter f according to value
    print(start_date_value)
    # Split the string by 'T' to separate date and time, and parse the date part
    start_date = dt.datetime.strptime(start_date_value.split('T')[0], '%Y-%m-%d')
    end_date = dt.datetime.strptime(end_date_value.split('T')[0], '%Y-%m-%d')


Beachte, dass ich die Reihenfolge der Argumente in der Funktionsdefinition korrigiert habe, um sie der Reihenfolge der Inputs und States deiner Callback-Deklaration entsprechend anzupassen. Außerdem wurde .split(' ')[0] durch .split('T')[0] ersetzt, um den Datumsteil korrekt zu extrahieren. Dieser Ansatz verwendet das 'T', das Datum und Uhrzeit in deinem ISO-Format trennt, um sicherzustellen, dass nur das Datum berücksichtigt wird.
Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community