Я видел этот же вопрос, заданный вокруг, но это всегда что-то вроде:Python3 ValueError: слишком много значений для распаковки с петлей для
val1, val2 = input("Enter 2 numbers")
Моя проблема отличается.
У меня есть две строки, str1
и str2
. Я хочу, чтобы сравнить их байт за байтом, так что результат будет выглядеть примерно так:
str1 str2
0A 0A
20 20
41 41
42 42
43 43
31 31
32 32
33 33
2E 21
Итак, я пробовал различные синтаксисом, чтобы сравнить их, но это всегда заканчивается в одной и той же ошибки. Вот один из моих последних попыток:
#!/usr/bin/python3
for c1, c2 in (tuple("\n ABC123."), tuple("\n ABC123!")):
print("%02X %02X" % (ord(c1), ord(c2)))
И ошибка:
$ python3 test.py
Traceback (most recent call last):
File "test.py", line 1, in <module>
ValueError: too many values to unpack (expected 2)
Конечно, эта линия:
for c1, c2 in (tuple("\n ABC123."), tuple("\n ABC123!")):
прошла через множество различных итераций:
for c1, c2 in "asdf", "asdf"
for c1, c2 in list("asdf"), list("asdf")
for c1, c2 in tuple("asdf"), tuple("asdf")
for c1, c2 in (tuple("asdf"), tuple("asdf"))
for (c1, c2) in (tuple("asdf"), tuple("asdf"))
Все они бросали один и тот же e rror.
Я не думаю, что я вполне понимаю синтаксис zipping/unzipping синтаксиса python, и я готов приступить к взлому решения низкого уровня вместе.
Любые идеи?
Я должен упомянуть, что утилита для этого состоит в том, что одна из строк является внутренней, а другая - из файла. Несмотря на то, что они читают то же самое, они не соответствуют друг другу, поэтому я ожидаю, что в конце у него есть дополнительные управляющие символы, такие как '0A', и именно это я пытался выяснить, когда я столкнулся с этой ошибкой. –
Обновление: [Я знал это!] (Http://pastebin.com/8YQk1uME) Python включает в себя '0A' с конца файла. –