从读取的文件中解压值并分配给lis

2024-09-30 16:20:28 发布

您现在位置:Python中文网/ 问答频道 /正文

在以下简短程序中:

data = []
f = open('C:/tsg3.txt', 'r').read().split("\t")

for i in range(0, len(f)-1):
   [GeneID, Sym, Alias, Xref, Chromo, Cyto, Full_name, Gene_type, Desc, Nuc_seq, Pro_seq = f[i]

我看到ValueError的出现(需要4个以上的值才能解包)。 显然,我做错了什么,因为我对Python比较陌生。在

任何帮助都将不胜感激。我使用的是python3.3.2。在

谢谢。在


Tags: in程序txtforreaddatalenrange
1条回答
网友
1楼 · 发布于 2024-09-30 16:20:28

您可以按制表符拆分整个文件,从而得到一个字符串列表。在

然后循环该列表,将f[i](单个字符串)分配给一个长的变量列表。从您的错误消息中,您试图为这些变量分配一个4个字符的字符串,导致分配单个字符,但由于字符数与变量数不匹配而失败。在

您很可能希望处理制表符分隔的文件。对此类任务使用^{} module

import csv

with open('C:/tsg3.txt', 'rb') as f:
    reader = csv.reader(f, delimiter='\t')
    for row in reader:
        # `row` is a list of columns.

因为文件有标题,所以您还可以使用csv.DictReader并使用字典代替(用标题键入):

^{pr2}$

并非所有行都有所有值;有些行似乎缺少核苷酸序列和蛋白质序列列。在

为了将来参考,您可以直接在python列表上循环,不需要使用带range()的索引:

for i in f:
    # do something with the individual elements of `f`, assigned to `i` each iteration.

相关问题 更多 >