Inspiriert von einigen der obigen Antworten, die mit Basis-Python-Paketen funktionieren, habe ich die Leistung einiger weniger verglichen (mit Python 3.7.3):
Methode 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
Methode 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
Methode 3: kein Import
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
Ich war enttäuscht zu sehen, dass die Methode mit der schlechtesten Lesbarkeit die Methode mit der besten Leistung war. Bei der am besten lesbaren Option sind Kompromisse zu berücksichtigen. Für die Art der Workloads, für die ich normalerweise Python verwende Wert Lesbarkeit über eine etwas leistungsfähigere Option, aber wie üblich hängt es davon ab.