Inspiré de certaines des réponses ci-dessus qui fonctionnent avec les packages python de base, j'ai comparé les performances de quelques-uns (en utilisant Python 3.7.3):
Méthode 1: ast
import ast
list(map(str.strip, ast.literal_eval(u'[ "A","B","C" , " D"]')))
# ['A', 'B', 'C', 'D']
import timeit
timeit.timeit(stmt="list(map(str.strip, ast.literal_eval(u'[ \"A\",\"B\",\"C\" , \" D\"]')))", setup='import ast', number=100000)
# 1.292875313000195
Méthode 2: json
import json
list(map(str.strip, json.loads(u'[ "A","B","C" , " D"]')))
# ['A', 'B', 'C', 'D']
import timeit
timeit.timeit(stmt="list(map(str.strip, json.loads(u'[ \"A\",\"B\",\"C\" , \" D\"]')))", setup='import json', number=100000)
# 0.27833264000014424
Méthode 3: aucune importation
list(map(str.strip, u'[ "A","B","C" , " D"]'.strip('][').replace('"', '').split(',')))
# ['A', 'B', 'C', 'D']
import timeit
timeit.timeit(stmt="list(map(str.strip, u'[ \"A\",\"B\",\"C\" , \" D\"]'.strip('][').replace('\"', '').split(',')))", number=100000)
# 0.12935059100027502
J'ai été déçu de voir que ce que je considérais comme la méthode avec la pire lisibilité était la méthode avec les meilleures performances ... il y a des compromis à considérer lors de l'utilisation de l'option la plus lisible ... pour le type de charges de travail que j'utilise python pour moi habituellement valeur de lecture sur une option légèrement plus performante, mais comme d'habitude, cela dépend.