Ma liste a les dictionnaires suivants.
Je pousse ces valeurs à la base de données en pré Paring un dictionnaire utilisant une boucle sur les données ci-dessus. p> i Obtenez les données d'origine d'un Excel / CSV. Cela fonctionne bien tant que les touches correspondent aux données de l'Excel / CSV fourni. p> Dans le cas où, l'Excel / CSV a un "nom de l'employé" comme "nom de l'employé" ou "nom de l'employé", alors ce qui précède ne fonctionnera pas. P> y a-t-il un moyen de Ce que je peux gérer cela, de telles clés telles que «Nom de l'employé» sont mappées à la valeur correspondant à l'un des formats (nom de l'employé »,« nom de l'employé »,« nom de l'employé »),« rmg_spoc »correspondant à n'importe quel format (' RMG ',' RMG ',' RMG SPOC ',' RMG SPOC ',' RMG * '), "Total_experience" correspondant à l'un des formats («expérience totale», «expérience totale»,' * [e] [e] xperience em> * '). p> p> [CommandéDict ([((numéro d'employé ',' 1 '), ("Nom de l'employé", "Mme A'), (" RMG SPOC ', 'X'), ('' Expérience totale (YRS) ',' 3.06 '), («Jours non alloués»,' 18 '), («Détails de compétence», «Test manuel»), («Numéro de contact»,' 1234 ')]), OrderedDict ([(Numéro d'employé »,« 2 »), (« Nom de l'employé »,« M. B »), (« RMG SPOC »,« Y »), (« Expérience totale) ',' 2.51 '), («jours non alloués»,' 28 '), («Détails des compétences», «Test manuel»), («Numéro de contact»,' 2345 ')]), CommandedDict ([(Numéro d'employé) ',' 3 '), ("nom de l'employé", "M. C"), ("RMG SPOC", "Z"), ("Expérience totale (YRS)", "1,86'), (" jours non alloués " , '9'), («Détails de compétence», «C ++, test manuel, oracle»), («Numéro de contact», '4567')]), CommandéDict ([(«Numéro d'employé», '4'), ( "Nom de l'employé", "M. D '), (" RMG SPOC "," XYZ "), (" Expérience totale (YRS) "," 7,68 "), (" jours non alloués "," 23'), (" Détails de compétence ',' test manuel, sql, hcm '), ("numéro de contact",' 789 ')])]] code> p>
3 Réponses :
@ c.nivs est correct, voici un extrait montrant comment cela fonctionne compte de vos exemples.
options = ('Employee Number','EMPLOYEE NUMBER','employee number')
for option in options:
assert option.strip().lower() == "employee number"
print("true")
Qu'en est-il de la normalisation des clés dans votre entrée en premier? - Peut-être que quelque chose comme ce qui suit fera: pour les données d'échantillon, vous obtiendrez: p>
Cela ressemble à un exemple de problème répété de cas de dictionnaire insensible à casse ( cette question et tout Duplicats )
La solution proposée à partir du message consiste à utiliser une enveloppe de dict (ou collections.OseredDict), comme: P> et dans votre code Vous venez d'envelopper vos dicts avec ce wrapper afin que vous puissiez effectuer une recherche de clé insensible à casse: p>
Cela fonctionne pour les valeurs sensibles à la casse. Je reçois un avertissement lorsque cela est utilisé - déprécationwarning: utiliser ou importer les abcs de «collections» au lieu de «collections.abc» est obsolète et en 3.8, cela cessera de fonctionner
Correction - Utilisé Import Collections.ABC B>
Habituellement, une combinaison de
'Employee Name'.Strip (). Basse () CODE>