Antworten:
"2.7.0_bf4fda703454".split("_")
gibt eine Liste von Zeichenfolgen:
In [1]: "2.7.0_bf4fda703454".split("_")
Out[1]: ['2.7.0', 'bf4fda703454']
Dadurch wird die Zeichenfolge bei jedem Unterstrich aufgeteilt. Wenn Sie möchten, dass es nach dem ersten Split stoppt, verwenden Sie"2.7.0_bf4fda703454".split("_", 1)
.
Wenn Sie sicher sind, dass die Zeichenfolge einen Unterstrich enthält, können Sie LHS und RHS sogar in separate Variablen entpacken:
In [8]: lhs, rhs = "2.7.0_bf4fda703454".split("_", 1)
In [9]: lhs
Out[9]: '2.7.0'
In [10]: rhs
Out[10]: 'bf4fda703454'
Eine Alternative ist zu verwenden partition()
. Die Verwendung ähnelt dem letzten Beispiel, außer dass drei statt zwei Komponenten zurückgegeben werden. Der Hauptvorteil besteht darin, dass diese Methode nicht fehlschlägt, wenn die Zeichenfolge kein Trennzeichen enthält.
Teilen Sie eine Zeichenfolge auf Leerzeichen, rufen Sie eine Liste ab, zeigen Sie ihren Typ an und drucken Sie sie aus:
el@apollo:~/foo$ python
>>> mystring = "What does the fox say?"
>>> mylist = mystring.split(" ")
>>> print type(mylist)
<type 'list'>
>>> print mylist
['What', 'does', 'the', 'fox', 'say?']
Wenn Sie zwei Trennzeichen nebeneinander haben, wird eine leere Zeichenfolge angenommen:
el@apollo:~/foo$ python
>>> mystring = "its so fluffy im gonna DIE!!!"
>>> print mystring.split(" ")
['its', '', 'so', '', '', 'fluffy', '', '', 'im', 'gonna', '', '', '', 'DIE!!!']
Teilen Sie eine Zeichenfolge auf Unterstrich und greifen Sie zum fünften Element in der Liste:
el@apollo:~/foo$ python
>>> mystring = "Time_to_fire_up_Kowalski's_Nuclear_reactor."
>>> mystring.split("_")[4]
"Kowalski's"
Reduzieren Sie mehrere Felder zu einem
el@apollo:~/foo$ python
>>> mystring = 'collapse these spaces'
>>> mycollapsedstring = ' '.join(mystring.split())
>>> print mycollapsedstring.split(' ')
['collapse', 'these', 'spaces']
Wenn Sie keinen Parameter an die Split-Methode von Python übergeben, heißt es in der Dokumentation : "Läufe aufeinanderfolgender Leerzeichen werden als einzelnes Trennzeichen betrachtet, und das Ergebnis enthält am Anfang oder Ende keine leeren Zeichenfolgen, wenn die Zeichenfolge führende oder nachfolgende Leerzeichen enthält."
Halten Sie Ihre Hüte fest, Jungs, analysieren Sie einen regulären Ausdruck:
el@apollo:~/foo$ python
>>> mystring = 'zzzzzzabczzzzzzdefzzzzzzzzzghizzzzzzzzzzzz'
>>> import re
>>> mylist = re.split("[a-m]+", mystring)
>>> print mylist
['zzzzzz', 'zzzzzz', 'zzzzzzzzz', 'zzzzzzzzzzzz']
Der reguläre Ausdruck „[AM] +“ bedeutet die Kleinbuchstaben a
durch m
die auftreten , ein oder mehrere Male als ein Trennzeichen abgestimmt sind. re
ist eine zu importierende Bibliothek.
Oder wenn Sie die Gegenstände einzeln zerlegen möchten:
el@apollo:~/foo$ python
>>> mystring = "theres coffee in that nebula"
>>> mytuple = mystring.partition(" ")
>>> print type(mytuple)
<type 'tuple'>
>>> print mytuple
('theres', ' ', 'coffee in that nebula')
>>> print mytuple[0]
theres
>>> print mytuple[2]
coffee in that nebula
Wenn es sich immer um eine gleichmäßige LHS / RHS-Aufteilung handelt, können Sie auch partition
die in Zeichenfolgen integrierte Methode verwenden. Es wird ein 3-Tupel zurückgegeben, als (LHS, separator, RHS)
ob das Trennzeichen gefunden würde und (original_string, '', '')
wenn das Trennzeichen nicht vorhanden wäre:
>>> "2.7.0_bf4fda703454".partition('_')
('2.7.0', '_', 'bf4fda703454')
>>> "shazam".partition("_")
('shazam', '', '')
partition
Methode der Zeichenfolgen und aktualisieren Sie dann Ihre Frage.