2016-04-13 10 views
3

私は最近Python 2.7の作業を開始しました。スペースを使ってデータを含むテキストファイルを取得する課題があります。すべての行を1つのタイプのデータだけを含む文字列に分割する必要があります。ここでは例です:Pythonの文字に基づいて行を分割するにはどうしたらいいですか?

Bruce Wayne 10012-34321 2016.02.20. 231231 
John Doe 10201-11021 2016.01.10. 2310456 
Chris Taylor 10001-31021 2015.12.30. 524432 
James Michael Kent 10210-41011 2016.02.03. 3235332 

私は名前、ID、日付、バランスによってそれらを分離したいが、私は知っている唯一のことは、最後の指定された名前は、三つの部分の代わりに、2を持っているので、私は本当に使用することはできません分割され、 。文字に基づいて行を分割するにはどうしたらよいでしょうか?

何か助けていただければ幸いです。

+0

これは重複しています。 http://stackoverflow.com/questions/2492415/python-split-by-1-or-more-occurrences-of-a-delimiter – Harry

答えて

5

あなたはstr.rsplit()を使用して、このように、分割の最大数を供給することをお勧めします:取得するには

:あなたが必要なもの

>>> s = 'James Michael Kent 10210-41011 2016.02.03. 3235332' 
>>> s.rsplit(' ', 3) 
['James Michael Kent', '10210-41011', '2016.02.03.', '3235332'] 

>>> s = 'Chris Taylor 10001-31021 2015.12.30. 524432' 
>>> s.rsplit(' ', 3) 
['Chris Taylor', '10001-31021', '2015.12.30.', '524432'] 
+1

's.rsplit '(' None、3)'を使うことができます任意の余白 –

-1

が最後の分割によって作成されたリストにルックアップするためにあります詳細

ln = 'James Michael Kent 10210-41011 2016.02.03. 3235332' 
ln.split()[-3:] 
['10210-41011', '2016.02.03.', '3235332'] 
ln = 'Bruce Wayne 10012-34321 2016.02.20. 231231' 
ln.split()[-3:] 
['10012-34321', '2016.02.20.', '231231'] 

名を取得するには、次の

ln.split()[:-3] 
['Bruce', 'Wayne'] 
ln = 'James Michael Kent 10210-41011 2016.02.03. 3235332' 
ln.split()[:-3] 
['James', 'Michael', 'Kent'] 
関連する問題