Python line.split(';:';)len为2,但仍然存在值错误
我遇到了一个我无法解决的问题。很简单,我有两个文本文件,一个是hash_found,格式为Python line.split(';:';)len为2,但仍然存在值错误,python,email,split,Python,Email,Split,我遇到了一个我无法解决的问题。很简单,我有两个文本文件,一个是hash_found,格式为 uncrackedHash:crackedHash 第二个文件,电子邮件列表的格式为: email:uncrackedHash 现在我要做的是,打印出电子邮件和破解的散列,如果未破解的散列是相同的 我经常遇到的错误是: email, uncracked = i.split(':') ValueError: too many values to unpack 然而len(i)=2 另外,我知道我打开文
uncrackedHash:crackedHash
第二个文件,电子邮件列表的格式为:
email:uncrackedHash
现在我要做的是,打印出电子邮件和破解的散列,如果未破解的散列是相同的
我经常遇到的错误是:
email, uncracked = i.split(':')
ValueError: too many values to unpack
然而len(i)=2
另外,我知道我打开文件是非常规的,而且是不好的做法,但它不应该影响代码。这正是我两年前学习Python的方式,一旦我学会了正确的方法,我就会进入这个惯例
hashes_found = open('hashes_found.txt', 'r')
email_list = open('email_list.txt', 'r')
for i in email_list:
i = i.strip()
email, uncracked = i.split(':')
for j in hashes_found:
j = j.strip()
try:
uncracked_2, cracked = j.split(':')
except Exception,e:
print e
continue
if uncracked == uncracked_2:
print email, ':', cracked
else:
continue
你说len(i)
是2,但这与len(i.split(“:”)
不同
我猜:您有空行,并且使用DOS格式(因此该行是\r\n
)
要跳过空行,请执行以下操作:
for i in email_list:
i = i.strip()
if i == '':
continue
也可能该行没有:
,您可以使用以下内容跳过这些内容:
for i in email_list:
i = i.strip()
if i == '':
continue
try:
email, uncracked = i.split(':')
except ValueError:
print("Warning: this line has no `:'\n %s" % i, file=sys.stderr)
# Or python2:
# print >> sys.stderr, "Warning: this line has no `:'\n %s" % i
continue
您可以使用aux变量:
hashes_found = open('hashes_found.txt', 'r')
email_list = open('email_list.txt', 'r')
for i in email_list:
aux = i.strip('\r\n').split(':')
email= aux[0]
uncracked = aux[1]
可能是文件中有空行吗?不相关但关键的错误:如果重复循环文件对象,第一次迭代之后的所有迭代都会将其视为空。因此,for的内部
循环几乎每次都会失败。len(i.split(“:”)=2感谢您的回答,那么如何绕过空行呢?这不是try/except的作用吗?将失败语句放在try/except
中,并在except
中打印i
的值,branchI可能是错误的,但这不应该是电子邮件列表中i的:
而不是对于电子邮件列表中的i:
?找到的哈希格式为uncrackedHash:crackedHash,第二个文件,电子邮件列表格式为:email:uncrackedHash。我不相信这样的肯定。输入值时打印该值failsladida@hahaha.ru25097c51e8b82bdef8af9983f8daaf76要解包的值太多是由于打印电子邮件导致的,未破解,e除了您应该print i
,否则您正在打印email
和untracked
之前的值,我将对此进行研究,但是我觉得我不应该需要这个来让我的代码正常工作。感谢您的回答如果aux
的长度为1,则仍将引发错误。。。这只是解决了问题,没有解决任何问题。