我有一个文件,其格式为一行,其后是一个未定义的数据行,然后是下一个名称,后跟下一个数据行。这个重复约300个名字。
我正在尝试将名称和数据保存到字典中,因为我希望以后可以操作数据。
我无法找到如何使用文本中上面列出的蛋白质名称的键将文件行分隔到字典中的示例。
我已经能够使用蛋白质名称的键创建一个空字典,但无法弄清楚或在线查找如何在字典中的每个正则表达式之间存储这些行。
每个名称行都以>
以下是一个例子。
>Position Peptide Score Cutoff
>AAR88322
1 *********M|DAMK 0.253 0
2 ********MD|AMKR 0.601 0
3 *******MDA|MKRG 0.353 0
4 ******MDAM|KRGL 0.204 0
5 *****MDAMK|RGLC 0.326 0
6 ****MDAMKR|GLCC 0.125 0
>AAR88321
1 *********M|DAMK 0.253 0
2 ********MD|AMKR 0.601 0
3 *******MDA|MKRG 0.353 0
4 ******MDAM|KRGL 0.204 0
5 *****MDAMK|RGLC 0.326 0
我已经能够使用此代码
创建空字典if len(parts) < 2:
prot_number = parts[0]
dict[prot_number[1:]]= []
非常感谢任何有关如何执行此操作的帮助或建议。
答案 0 :(得分:0)
这是一个简单的算法:
示例:
name_dict = {} # create empty dictionary
with open (file_name, 'r') as fi: # open file
for line in fi: # iterate over the lines
if line.startswith('>'): # check for name line marker
current_name = line.lstrip('>') # store name without angle bracket
name_dict[current_name] = [] # create dictionary entry with empty list
else:
name_dict[current_name].append(line) # not a name line, add to current name's list of lines
这将生成一个字典,其键是名称,每个名称的值是在其部分中找到的行的列表。由您决定如何处理数据,但是您可以在字典中存储非名称行以进行大量预处理,以便将来处理更简单。例如,您可以在存储线之前拆分线并剥去所有这些星号。