特定の方法でフォーマットしたい大きなファイルがあります。ファイル入力例:
DVL1 03220 NP_004412.2 VANGL2 02758 Q9ULK5 in vitro 12490194
PAX3 09421 NP_852124.1 MEOX2 02760 NP_005915.2 in vitro;yeast 2-hybrid 11423130
VANGL2 02758 Q9ULK5 MAGI3 11290 NP_001136254.1 in vitro;in vivo 15195140
そして、これが私がなりたい方法です:
DVL1 03220 NP_004412 VANGL2 02758 Q9ULK5
PAX3 09421 NP_852124 MEOX2 02760 NP_005915
VANGL2 02758 Q9ULK5 MAGI3 11290 NP_001136254
要約する:
- 行に 1 つのドットがある場合、そのドットはその後の数値とともに削除され、\t が追加されるため、出力行には 6 つのタブ区切りの値のみが含まれます。
- 行に 2 つのドットがある場合、それらのドットはその後の数字とともに削除され、\t が追加されるため、出力行には 6 つのタブ区切りの値のみが含まれます。
- 行にドットがない場合は、最初の 6 つのタブ区切りの値を維持します
私の考えは現在、次のようなものです。
for line in infile:
if "." in line: # thought about this and a line.count('.') might be better, just wasn't capable to make it work
transformed_line = line.replace('.', '\t', 2) # only replaces the dot; want to replace dot plus next first character
columns = transformed_line.split('\t')
outfile.write('\t'.join(columns[:8]) + '\n') # if i had a way to know the position of the dot(s), i could join only the desired columns
else:
columns = line.split('\t')
outfile.write('\t'.join(columns[:5]) + '\n') # this is fine
私が自分自身をうまく説明したことを願っています。皆さんの努力に感謝します。