J'essaie de classer les colonnes et les valeurs (colonne = valeur) de manière significative à partir d'une chaîne d'entrée en utilisant des dictionnaires Python.Comment créer des listes de paires de valeurs de colonnes significatives à partir d'une chaîne?
input_string = "the status is processing and product subtypes are HL year 30 ARM and applicant name is Ryan"
J'ai créé des dictionnaires de paires de valeurs clés. Dans le premier scénario, la clé est le nom de la colonne. La valeur représente l'indice de clé le plus bas trouvé dans input_string
.
Voici le dictionnaire des noms de colonnes:
dict_columns = {'status': 4, 'product subtypes': 29, 'applicant name': 69}
Dans le dictionnaire ci-dessus, 'status'
a l'indice le plus bas de 4
dans le input_string
.
De même, voici le dictionnaire des valeurs:
dict_values = {'processing': 14, 'hl': 50, 'year': 53, '30': 58, 'arm': 61, 'ryan': 87}
La question est:
Comment obtenir le ouput attendu que:
list_parsed_values = ['processing', 'hl year 30 arm', 'ryan']
et la liste (facultative) correspondante des colonnes a s:
list_parsed_columns = ['status', 'product subtypes', 'applicant name']
Comment distinguer clairement les valeurs dans une liste?
travaillant sur des données brutes (unstructed), je vous suggère d'utiliser 'regex' ici –
s'il vous plaît, ajouter d'autres exemples d'entrée et de sortie souhaitée –
Une idée: 're.split' avec' r '\ b (?: status | sous-types de produits | nom du demandeur) \ b'', et [supprimer tous les mots vides des items reçus] (http://stackoverflow.com/questions/ 5486337/comment supprimer-stop-mots-using-nltk-ou-python). Jeter les éléments vides. Pour savoir quel type d'information il s'agit, vous pouvez diviser avec le même modèle que ci-dessus mais supprimer '?:'. Ensuite, vous pouvez vérifier chaque colonne impaire pour la valeur et même colonne pour la clé. –