循环用于在Python中解析复杂制表符分隔/ csv文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了循环用于在Python中解析复杂制表符分隔/ csv文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2040字,纯文字阅读大概需要3分钟。
内容图文
![循环用于在Python中解析复杂制表符分隔/ csv文件](/upload/InfoBanner/zyjiaocheng/732/49c657367eda4861ad9e6dc19ff1412f.jpg)
为了清楚起见,我对编程非常陌生,而且我正在使用Python 3.3!现在我有相同基本布局的很多文件.每个文件有9列,制表符分隔和可变数量的标题行 – 但大多数都有五行.行或列没有标题!
看起来像这样:
#header1
#header2
#header3
#header4
#header5
ID1 asdf asdk asdfk asdfkl adsfkln askdlfn safsda asdf Notes1..
ID2 asdf asdk asdfk asdfkl adsfkln askdlfn safsda asdf Notes2..
ID3 asdf asdk asdfk asdfkl adsfkln askdlfn safsda asdf Notes3..
ID4 asdf asdk asdfk asdfkl adsfkln askdlfn safsda asdf Notes4..
我想要的唯一信息是第一列,其中包含ID,最后一列包含有关每个ID的注释.我正在为这样的字典拍摄
{'ID1': [notes1...]
'ID2': [notes2...]....
'ID1234': [notes1234...]}
但我会对词典列表或类似的词汇感到高兴.
所以我开始将文本转换为列表列表,以便我可以按索引查找条目:
import csv
list_all = list(csv.reader(open(r'complex_tabbed_file.gff', 'rb'), delimiter='\t'))
d = dict()
ID = data[5][0] #starting at 5 to skip the header lines
notes = data[5][8]
d[ID]= notes
print (d)
这给了我正在寻找的信息,但我只读了一个条目.我需要创建一个循环来读取整个文件,其中包含数百个条目……起点上的建议?
我研究并发现了这个:Read specific columns from a csv file with csv module?
这描述了类似的情况,但编码有点过头了.因为我是一个新手,我很难将这个例子应用到我的特定情况=(
这就是我在迭代中所尝试的:
i=0
if i < 4:
i= i+1
if i >= 5:
ID = list_all[i][0]
notes = list_all[i][8]
i= i+1
print (d)
这会返回一个空字典(d = {})不好.
也试过了
d = dict()
i=5
for line in list_all:
ID = list_all[i][0]
notes = list_all[i][8]
i = i+1
print (d)
这给了如此可爱的“列表索引超出范围”错误消??息.我真的很感激任何建议,谢谢!
解决方法:
您可以解决迭代每一行并丢弃那些只有一个字段(标题)的行:
import csv
import sys
d = dict()
with open(sys.argv[1], newline='') as csvfile:
csvreader = csv.reader(csvfile, delimiter='\t')
for row in csvreader:
if len(row) == 1: continue
_d = {row[0]: [row[-1]]}
d.update(_d)
print(d)
运行它像:
python3 script.py infile
产量:
{
'ID4': ['Notes4..'],
'ID1': ['Notes1..'],
'ID2': ['Notes2..'],
'ID3': ['Notes3..']
}
内容总结
以上是互联网集市为您收集整理的循环用于在Python中解析复杂制表符分隔/ csv文件全部内容,希望文章能够帮你解决循环用于在Python中解析复杂制表符分隔/ csv文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。