2016-12-22 5 views
0

私はあなたに教えてくれます。このような 一つのテーブル:改行と分割線

gi|494115682|ref|WP_007055464.1| MULTISPECIES: dephospho-CoA kinase [Bifidobacterium] 
    gi|614110824|sp|P9WIB2.1|PHLB_MYCTO RecName: Full=Phospholipase C 2; Flags: Precursor 
    gi|446269943|ref|WP_000347798.1| MULTISPECIES: amino acid ABC transporter permease [Vibrio] 
    gi|446561267|ref|WP_000638613.1| acetyltransferase [Staphylococcus aureus] 

私が作るline.split(「|」)最後のパイプ分離するために 『|』、いくつかのラインがちょうど後、最後に私が取得カント空きスペースを持っていないが明確な表。例えば :

GI | 614110824 | SP | P9WIB2.1 | PHLB_MYCTO RECNAME:フル=ホスホリパーゼC 2。フラグ:Precursor

私の意図は、最後の '|' '\ t'、分割後は '\ t'となります。上記の行を使って、私が望む位置にすべての行を分割することはできません。

for g in file: 
    name = g.replace('| ', '|\t'). 

ストリップ()スプリット( '\ tの')私が最初で分割した場合

。 '|' この行を修正して、四番目のパイプを囲むと '|'に置き換えることはできますか? '分割した後に?

ありがとうございます。

+1

あなたが望む結果を投稿することができますか? –

+0

なぜ ''|に分割するのですか? ''の代わりに '' | ''の代わりに?スペースなしで '|'を使い、リストの-1番目の要素を使います。 – Fejs

答えて

2
text = 'gi|494115682|ref|WP_007055464.1| MULTISPECIES: dephospho-CoA kinase [Bifidobacterium]' 
text.rsplit('|',1) 

アウト:

['gi|494115682|ref|WP_007055464.1', 
' MULTISPECIES: dephospho-CoA kinase [Bifidobacterium]'] 

str.rsplit(SEP =なし、maxsplit個= -1)

リターンとして9月を用い 文字列内の単語のリスト、デリミタ文字列。 maxsplitが指定されている場合は、 に、ほとんどのmaxsplit分割が実行され、右端の分割が実行されます。 sepが が指定されていない場合、またはNoneの場合、空白文字列はセパレータです。

1

私はあなたが実際にcsvモジュールをしたい疑う:

import io 
import csv 

file = io.StringIO(''' 
gi|494115682|ref|WP_007055464.1| MULTISPECIES: dephospho-CoA kinase [Bifidobacterium] 
gi|614110824|sp|P9WIB2.1|PHLB_MYCTO RecName: Full=Phospholipase C 2; Flags: Precursor 
gi|446269943|ref|WP_000347798.1| MULTISPECIES: amino acid ABC transporter permease [Vibrio] 
gi|446561267|ref|WP_000638613.1| acetyltransferase [Staphylococcus aureus] 
'''.strip()) 

reader = csv.reader(file, delimiter='|') 
for row in reader: 
    print(row) # or print('\t'.join(row))