簡體   English   中英

Python:從.seg文件提取數據

[英]Python: Extracting data from a .seg file

我有這個.seg文件,我需要從該文件中根據群集號(例如S0提取第3和第4列中的值。

;; cluster S0 
khatija-ankle 1 0 184 F S U S0
;; cluster S1 
khatija-ankle 1 407 291 F S U S1
khatija-ankle 1 790 473 F S U S1
khatija-ankle 1 1314 248 F S U S1
khatija-ankle 1 1663 187 F S U S1

到目前為止,這是我的代碼:

file1 = open('f1.seg', "w")
file2 = open('f2.seg', "w")

with open('ankle.seg','r') as f:
    for line in f:
        for word in line.split():
            if word == 'S0':
            file1.write(word)
        elif word == 'S1':
            file2.write(word) 

如何創建每個群集的文件並在其中寫入第3列和第4列?

問題 :如何創建每個群集的文件並在其中寫入第3列和第4列?

相反, if word == 'S0':比較單列值,請檢查哪個集群ID具有一行數據的最后一列。

例如:

# Create a list of column values
data = line.rstrip().split()

# Condition: last value in data == cluster id
if data[-1] == 'S0':
    # write to S0 file
    print("file1.write({})".format(data[2:4]))

elif data[-1] == 'S1':
    # write to S1 file
    print("file2.write({})".format(data[2:4]))

輸出

 file1.write(['S0']) file1.write(['0', '184']) file2.write(['S1']) file2.write(['407', '291']) file2.write(['790', '473']) file2.write(['1314', '248']) file2.write(['1663', '187']) 

使用Python測試:3.4.2

雖然這當然可以在Python中完成,但它很好地說明了為什么awk非常適合斜線切割文本文件:

#! /usr/bin/awk -f
/^;;/ {
      filename = $3 ".seg"
      next
}

{ print $3, $4 > filename }

輸出:

$ tail *.seg
==> S0.seg <==
0 184

==> S1.seg <==
407 291
790 473
1314 248
1663 187

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM