2

したがって、次のような約1000行のファイルがあります。

COADREAD    ZNF271  Missense_Mutation   TCGA-AA-3947    Q14591  A177T 
COADREAD    ZNF271  Missense_Mutation   TCGA-AA-A00N    Q14591  I26T  
COADREAD    ZNF271  Missense_Mutation   TCGA-AG-A002    Q14591  M418T

IDの5列目を探し、2文字の間の数字を取得するコードがあります。

5 列目 (または 6 列目のトークン) の id の後にトークン全体を取得する方法はありますか。

そのトークンを取得して、別のファイルに書き込むことができるようにします。

ここに私がこれまでに持っているものがあります(このコードは私に数字を与えますが、計算する数字とそのトークンの文字列全体を取得して出力ファイルに出力する方法はありますか): たとえば、lookup[Q14591] を呼び出す場合['177','26',418] が表示されますが、A177T I26T と M418T も必要です

lookup = defaultdict(list)
mydata = open('summaryfile.txt')
for line in csv.reader(mydata, delimiter='\t'):
    code = re.match('[a-z](\d+)[a-z]', line[-1], re.I)
    if code: 
        lookup[line[-2]].append(code.group(1))
4

2 に答える 2

1

正規表現を使用する場合、group(0)一致した文字列全体を含める必要があります。だからあなたの場合:

code.group(0)

トークン全体を含める必要があります。したがって、コードを次のように変更すると、次のようになります。

lookup = defaultdict(list)
wholelookup = defaultdict(list)

mydata = open('summaryfile.txt')
for line in csv.reader(mydata, delimiter='\t'):
    code = re.match('[a-z](\d+)[a-z]', line[-1], re.I)
    if code: 
        lookup[line[-2]].append(code.group(1))
        wholelookup[line[-2]].append(code.group(0))

次に、次のようにトークン全体にアクセスできます。

wholelookup['Q14591']

または、次のようなサブトークン:

lookup['Q14591']
于 2012-07-23T19:30:39.580 に答える
0

もちろん。このようなもの: この行を置き換えます:

lookup[line[-2]].append(code.group(1))

これとともに:

lookup[line[-2]].append((code.group(1),line[-1]))

[あなたが質問している部分はすでにあります...正規表現で使用しています!]

これにアクセスする方法については、以前は次のようになりました。

lookup[Q14591] == ['177','26',418] 

今: lookup[Q14591] == [('177', 'A177T'), ('26', 'I26T'), ('418',' 'A177T')]

...ルックアップ[Q14591][0] == '177'、およびルックアップ[Q14591][1] == 'A177T'

于 2012-07-23T19:32:25.487 に答える