2

大きなデータファイルがいくつかあり、各行の特定のデータ(基本的にはIDコード)をコピーしたいと思います。IDコードには、|片側にスペースがあり、反対側にスペースがあります。IDだけを抜くことができるのではないかと思っていました。また、2つのデータファイルがあります。1つには1行あたり4つのIDコードがあり、もう1つには1行あたり23のIDコードがあります。

現時点では、データファイルから各行をコピーし、文字列を相互に減算して目的のIDコードを取得するようなものを考えていますが、もっと簡単な方法があるはずです。ヘルプ?

これは、私が使用しているデータファイルの行の例です。

cluster8032:  WoodR1|Wood_4286 Q8R1|EIK58010 F113|AEV64487.1 NFM421|PSEBR_a4327

この行から別の行に出力したいと思います

Wood_4286
EIK58010
AEV644870.1
PSEBR_a4327
4

2 に答える 2

5

このようなタスクには正規表現モジュールを使用してください。次のコードは、文字列からIDを抽出する方法を示しています(同じように構造化されている限り、任意の数のIDに対して機能します)。

import re
s = """cluster8032:  WoodR1|Wood_4286 Q8R1|EIK58010 F113|AEV64487.1 NFM421|PSEBR_a4327"""
results = re.findall('\|([^ ]*)',s) #list of ids that have been extracted from string
print('\n'.join(results)) #pretty output

出力:

Wood_4286
EIK58010
AEV64487.1
PSEBR_a4327

出力をファイルに書き込むには:

with open('out.txt', mode = 'w') as filehandle:
    filehandle.write('\n'.join(results))

詳細については、regexモジュールのドキュメントを参照してください。

于 2012-07-25T13:57:19.677 に答える
1

すべての行が指定された形式である場合、単純な分割で十分です。

#split by '|' and the result by space
ids = [x.split()[0] for x in line.split("|")[1:]]
于 2012-07-25T14:14:26.750 に答える