Ich lerne Python und versuche, einen effizienten Weg zu finden, um eine durch Kommas getrennte Zeichenkette in eine Liste zu tokenisieren. Gut ausgebildete Fälle funktionieren wie ich es erwarte, aber weniger gut geformte Fälle nicht so sehr.
Wenn ich das habe:
%Vor%was ich erwarte, aber wenn die Zeichenfolge etwas mehr wie
ist %Vor%Wenn ich den gleichen Listenverständnisausdruck für B wie oben verwende, bekomme ich eine Ausnahme. Ich denke, ich verstehe warum (weil einige der "x" Zeichenfolgenwerte keine Ganzzahlen sind), aber ich denke, dass es eine Möglichkeit geben würde, dies noch recht elegant zu analysieren, so dass die Tokenisierung der Zeichenfolge ein bisschen direkter wirkt strtok (A, ", \ n \ t") hätte getan, wenn iterativ in C aufgerufen wird.
Um klar zu sein, was ich verlange; Ich suche nach einem eleganten / effizienten / typischen Weg in Python, um alle folgenden Beispielfälle von Strings zu haben:
%Vor%geben Sie mit derselben Liste von:
zurück %Vor%über eine Art kompakten Ausdruck.
Wie wäre es damit:
%Vor%x.strip () trimmt Leerzeichen aus der Zeichenfolge, wodurch es leer wird, wenn die Zeichenfolge nur Leerzeichen enthält. Eine leere Zeichenfolge ist in einem booleschen Kontext "false", daher wird sie nach dem if-Teil des Listenverständnisses gefiltert.
Mmm, funktionale Güte (mit ein wenig Generatorausdruck):
%Vor%Für volle funktionelle Freude:
%Vor%Wie wäre es damit?
%Vor% Der Filterentfernt alle falschen Werte (d. h. leere Zeichenfolgen), die dann auf int.
abgebildet werdenBEARBEITEN: Habe es gerade mal mit den oben geposteten Versionen getestet, und es scheint wesentlich schneller zu sein, 15% oder so verglichen mit dem strip () ein und mehr als doppelt so schnell wie das isdigit () eins
Der Vollständigkeit halber werde ich diese sieben Jahre alte Frage beantworten: Das C-Programm, das strtok verwendet:
%Vor%kann in python mit re.split als:
ausgeführt werden %Vor%Warum nicht einfach in einen Versuch einbinden außer Block, der alles fängt, nicht eine ganze Zahl?
Ich würde vermuten, dass reguläre Ausdrücke der richtige Weg sind: Ссылка
Tags und Links python