J'ai des données qui contiennent le nom de la table de la base de données.
avec un code comme celui-ci:
['actor'] ['film'] ['film'] ['film', 'rental', 'inventory'] ['inventory', 'customer', 'film', 'rental'] ['customer', 'rental']
les données sont comme ceci:
['public.actor'] ['public.film'] ['film'] ['film', 'rental', 'inventory'] ['inventory i', 'customer c', 'film f', 'rental r'] ['customer as c', 'rental as r']
3 Réponses :
Si vos seuls cas sont de supprimer public.
et as x
de vos entrées, vous pouvez utiliser
re.sub("(public\.|\sas.+)", "", input_string)
def clean(string): p = string.split() if len(p) == 1: return p[0].split('.')[-1] else: return p[0]
Salut. Vous devez également ajouter des explications avec votre réponse. Vous pouvez écrire sur l'erreur commise par OP ou ce qu'il / elle a manqué.
Connaissez-vous l'ensemble des noms de table de base de données possibles attendus? On dirait que vous voudriez ou seriez en mesure de l'interroger à partir de la base de données. Si tel est le cas:
result = [] for db_list in data: db_list = [db.split('public.')[0] for db in db_list] db_list = [db.split(' ')[0] for db in db_list] result.append(db_list)
Si vous ne le faites pas, votre solution ne sera aussi bonne que la prévisibilité des données entrantes à nettoyer. Avec l'ensemble, vous avez:
database_tables = ['actor', 'film', 'rental', 'inventory', 'customer'] results = [] for db_list in data: db_list = [db for db in database_tables if db in ''.join(db_list)] results.append(db_list)
Veuillez corriger votre indentation.