回答:
"2.7.0_bf4fda703454".split("_")
文字列のリストを与える:
In [1]: "2.7.0_bf4fda703454".split("_")
Out[1]: ['2.7.0', 'bf4fda703454']
これにより、アンダースコアごとに文字列が分割されます。最初の分割後に停止する場合は、を使用します"2.7.0_bf4fda703454".split("_", 1)
。
文字列にアンダースコアが含まれていることがわかっている場合は、LHSとRHSを別々の変数にアンパックすることもできます。
In [8]: lhs, rhs = "2.7.0_bf4fda703454".split("_", 1)
In [9]: lhs
Out[9]: '2.7.0'
In [10]: rhs
Out[10]: 'bf4fda703454'
代わりにを使用することpartition()
です。使い方は前の例と似ていますが、2つではなく3つのコンポーネントを返す点が異なります。主な利点は、文字列にセパレータが含まれていなくても、このメソッドが失敗しないことです。
文字列をスペースで分割し、リストを取得し、そのタイプを表示し、印刷します。
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?']
2つの区切り文字が隣接している場合、空の文字列が想定されます。
el@apollo:~/foo$ python
>>> mystring = "its so fluffy im gonna DIE!!!"
>>> print mystring.split(" ")
['its', '', 'so', '', '', 'fluffy', '', '', 'im', 'gonna', '', '', '', 'DIE!!!']
下線で文字列を分割し、リストの5番目の項目を取得します。
el@apollo:~/foo$ python
>>> mystring = "Time_to_fire_up_Kowalski's_Nuclear_reactor."
>>> mystring.split("_")[4]
"Kowalski's"
複数のスペースを1つに折りたたむ
el@apollo:~/foo$ python
>>> mystring = 'collapse these spaces'
>>> mycollapsedstring = ' '.join(mystring.split())
>>> print mycollapsedstring.split(' ')
['collapse', 'these', 'spaces']
Pythonのsplitメソッドにパラメータを渡さない場合、ドキュメントには次のように記載されています。
帽子をかぶって、正規表現で構文解析します。
el@apollo:~/foo$ python
>>> mystring = 'zzzzzzabczzzzzzdefzzzzzzzzzghizzzzzzzzzzzz'
>>> import re
>>> mylist = re.split("[a-m]+", mystring)
>>> print mylist
['zzzzzz', 'zzzzzz', 'zzzzzzzzz', 'zzzzzzzzzzzz']
正規表現「[am] +」は、1回以上発生する小文字のa
からm
までが区切り文字として一致することを意味します。re
インポートするライブラリです。
または、一度に1つずつアイテムを詰めたい場合:
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
partition
文字列のメソッドを読み、質問を更新します。