簡體   English   中英

如何從文本文件中收集數據以在Python中使用dict?

[英]How to collect data from text file to dict in Python?

我在文本文件“ fasta.txt”中生成了下表

                A               C               G               T               
0               0.195965417867  0.322766570605  0.35446685879   0.126801152738  
A1              0.25            0.1875          0.3125          0.25            
C1              0.25            0.475           0.225           0.05            
G1              0.135135135135  0.243243243243  0.405405405405  0.216216216216  
T1              0.142857142857  0.285714285714  0.285714285714  0.285714285714  
A2              0.125           0.208333333333  0.625           0.0416666666667 
C2              0.0833333333333 0.416666666667  0.305555555556  0.194444444444  
G2              0.111111111111  0.361111111111  0.388888888889  0.138888888889  
T2              0.1             0.15            0.55            0.2             
A3              0.333333333333  0.25            0.416666666667  0.0             
C3              0.314285714286  0.4             0.171428571429  0.114285714286  
G3              0.254901960784  0.372549019608  0.333333333333  0.0392156862745 
T3              0.235294117647  0.235294117647  0.470588235294  0.0588235294118 

我想從文本文件中獲取數據,然后將它們放在字典或列表列表中。 我嘗試使用剝離方法

with open('fasta.txt') as f:
   for l in f:
      print l.strip().split("\t")

但是它並沒有真正實現我想要的效果。

我想知道如何將統計信息(0行除外)收集到字典中,如下所示:

d = {"AA":{"1":0.25,"2":0.125,"3":0.333333333333}, "AC":{"1":0.1875,"2":0.208333333333,"3":0.25}, "AG":{"1":0.3125,"2":0.625,"3":0.416666666667}, "AT":{"1":0.25,"2":0.0416666666667,"3":0.0}, "CA":{"1":...,"2":...,"3":...}, "CC":{"1":...,"2":...,"3":...}, "CG":{"1":...,"2":...,"3":...}, "CT":{"1":...,"2":...,"3":...}, "GA":{"1":...,"2":...,"3":...}, "GC":{"1":...,"2":...,"3":...}, "GG":{"1":...,"2":...,"3":...}, "GT":{"1":...,"2":...,"3":...}, "TA":{"1":...,"2":...,"3":...}, "TC":{"1":...,"2":...,"3":...}, "TT":{"1":...,"2":...,"3":...}, "TG":{"1":...,"2":...,"3":...}}  #(... represents the respective data from the table)

在此先感謝您,我真的是Python的新手。 這里的問題是從文本文件中收集數據,而不是使用其唯一的csv模塊收集數據的csv文件

我想我了解您擁有的表,但是如果以下操作不起作用,請告訴我。 我試圖使該代碼盡可能通用(即,在標題行中讀取並且不假設4個鹼基作為標題,因此也可以用於蛋白質文件)。 此代碼應生成您想要的字典:

from collections import defaultdict

d=defaultdict(dict)
with open('fasta.txt') as f:
    headerFields=f.readline().split()
    # discard "0" line
    foo=f.readline()
    for line in f:
        fields = line.split()
        for i, stat in enumerate(fields[1:]):
            d[''.join((fields[0][0], headerFields[i]))][fields[0][1]] = stat

print dict(d)

還要注意,如果要在空白處進行分割(分割的默認設置strip()則不需要strip()如我的代碼所示。 希望這可以幫助!

暫無
暫無

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

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