值错误:需要多个值进行解包
我有一段代码是用来处理一个大文本文件中的字符串的。当我运行这段代码时,出现了一个错误信息:“ValueError: 需要更多的值来解包”。于是我把这一行中的整数改成了0、1和2:
_, k = line.split('\t',1)
如果我输入2,它就说“解包的值太多了”。我还尝试按照下面的方式定义每个变量:
f = []
_ = []
k = []
x = []
i = 0
.. 但这也没有成功。
这是代码:
# Opens each file to read/modify
infile='110331_HS1A_1_rtTA.result'
outfile='2.txt'
#import Regex
import re
with open (infile, mode='r', buffering=-1) as in_f, open (outfile, mode='w', buffering=-1) as out_f:
f = (i for i in in_f if i.rstrip())
for line in f:
_, k = line.split('\t',1)
x = re.findall(r'^1..100\t([+-])chr(\d+):(\d+)\.\.(\d+).+$',k)
if not x:
continue
out_f.write(' '.join(x[0]) + '\n')
这是错误信息:
Traceback (most recent call last):
File "C:\DB\Stack Overflow\test5.py", line 11, in <module>
_, k = line.split('\t',1)
ValueError: need more than 1 value to unpack
感谢那些愿意帮助我或教我的人 :)
2 个回答
2
你碰到了一个没有包含 \t
的行,所以结果列表里只有一个元素。
1
哦,那是我在另一个问题上写的代码。你本可以在那里问我...
因为你给的文件里没有任何不为空的行是没有tab
的,所以我以为不会有问题。
你可以通过修改这一行来检查是否有制表符:
f = (i for i in in_f if i.rstrip())
变成
f = (i for i in in_f if '\t' in i.rstrip())
这样你就能去掉空行和那些没有'\t'
的行。要查看你的文件中出现问题的行,你可以使用(原始代码):
try:
_, k = line.split('\t',1)
except:
print(line)
顺便说一下,_
通常用来表示在某些操作中我们不关心的东西。它可以用任何名字。
ATCGATTTCG....ATGC 1..100blablabla
^ ^
useless part (_) important one (k)