* 编辑,我重申了这个问题,希望它不像以前那样愚蠢!
我想创建一个与种类名称匹配登记号的字典。我格式化了我的文件,看起来像这样:
'AM158981':布鲁氏菌,pinnipedialis,Brucellaceae,
'AM158980':布鲁氏菌,猪链球菌,Brucellaceae,
'AM158982':布鲁氏菌,CETI,Brucellaceae,
'AM158979':布鲁氏菌,流产布鲁氏菌,Brucellaceae,
等......
我想打开此文件,使其成为字典。我写这篇文章试图打开它,并将入藏号码作为字典的关键词:
#! /usr/bin/env python
reader = open("acsn.txt")
result = {}
for row in reader:
key = row[0]
if key in result:
pass
result[key] = row[1:]
print result
“key = row [0]”行使入藏号的第一个字母成为关键。我意识到使用[0]只是返回字符串的第一个字符,但我不知道如何使它成为第一个'字'(例如AM158981)成为关键字。
谢谢!
答案 0 :(得分:2)
Python代码:
data = """>D50541 Abiotrophia defectiva Aerococcacea
>AB303221 Acanthopleuribacter pedis Acanthopleuribacteraceae
>AJ812213 Acaricomes phytoseiuli Micrococcaceae"""
dict(row[1:].split(" ", 1) for row in data.split("\n"))
输出:
{'AB303221': 'Acanthopleuribacter pedis Acanthopleuribacteraceae',
'AJ812213': 'Acaricomes phytoseiuli Micrococcaceae',
'D50541': 'Abiotrophia defectiva Aerococcacea'}
修改强>
如果从文件input.txt
读取数据,请执行以下操作:
dict(row[1:].split(" ", 1) for row in open("input.txt").read().split("\n") if row)
答案 1 :(得分:0)
这是一些帮助。
首先,最好使用with
构造在Python中打开文件,如下所示:
with open('/tmp/src.txt','r') as src:
for line in src:
print line.strip()
这应该完整地打印你的文件:
\>D50541 Abiotrophia defectiva Aerococcacea
\>AB303221 Acanthopleuribacter pedis Acanthopleuribacteraceae
\>AJ812213 Acaricomes phytoseiuli Micrococcaceae
现在您只需解析数据的每一行。仅仅基于个人偏好,我会使用正则表达式,但有很多方法可以做到这一点。 Here is an example regex适用于您的数据线。
这是Python中的相同示例正则表达式:
import re
data={}
with open('/tmp/src.txt','r') as src:
for line in src:
m=re.search(r'>([^\s]*)\s(.*)$',line)
if m:
data[m.group(1)]=m.group(2)
print data
打印:
{'AB303221': 'Acanthopleuribacter pedis Acanthopleuribacteraceae', 'AJ812213': 'Acaricomes phytoseiuli Micrococcaceae', 'D50541': 'Abiotrophia defectiva Aerococcacea'}