将列表的每个元素转换为 sha256
Convert each element of a list to sha256
我想知道如何将列表的每个元素转换为 sha256 并获取另一个列表中的值。
我使用的数据是:
lst=['Under.csv', 'Upper.csv', 'Below.csv', 'Outside.csv', 'Inside.csv', 'Out.csv', 'in.xlsx', 'water.xlsx', 'sun.xlsx']
我正在尝试使用列表推导:
lst1=[hashlib.sha256(b"i").hexdigest().upper() for i in lst]
但我只是重复了第一个元素的第一个 sha256。
还有:
lst2=[hashlib.sha256("{}".format(b'i')).hexdigest().upper() for i in lst]
另外一个我得到一个错误:
AttributeError: 'bytes' object has no attribute 'format'
我怎样才能解决这个问题并以与 lst 中的字符串相同的顺序获取另一个列表中每个元素的 sha256?
lst1 的输出是:
['DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7']
正如我所说,我只是重复了第一个值。
你得到了相同的值,因为你在 hashlib.sha256()
函数中使用了相同的字符串。您需要将 i
作为变量传递。尝试正确传递变量并对其进行编码
代码:
lst1=[hashlib.sha256(i.encode()).hexdigest().upper() for i in lst]
在您的第一个示例中,您将字符串“i”传递给函数。
你应该使用这样的东西:
[hashlib.sha256(i.encode()).hexdigest().upper() for i in lst]
在这里你传递 i
编码的值。
我想知道如何将列表的每个元素转换为 sha256 并获取另一个列表中的值。 我使用的数据是:
lst=['Under.csv', 'Upper.csv', 'Below.csv', 'Outside.csv', 'Inside.csv', 'Out.csv', 'in.xlsx', 'water.xlsx', 'sun.xlsx']
我正在尝试使用列表推导:
lst1=[hashlib.sha256(b"i").hexdigest().upper() for i in lst]
但我只是重复了第一个元素的第一个 sha256。
还有:
lst2=[hashlib.sha256("{}".format(b'i')).hexdigest().upper() for i in lst]
另外一个我得到一个错误:
AttributeError: 'bytes' object has no attribute 'format'
我怎样才能解决这个问题并以与 lst 中的字符串相同的顺序获取另一个列表中每个元素的 sha256?
lst1 的输出是:
['DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7']
正如我所说,我只是重复了第一个值。
你得到了相同的值,因为你在 hashlib.sha256()
函数中使用了相同的字符串。您需要将 i
作为变量传递。尝试正确传递变量并对其进行编码
代码:
lst1=[hashlib.sha256(i.encode()).hexdigest().upper() for i in lst]
在您的第一个示例中,您将字符串“i”传递给函数。
你应该使用这样的东西:
[hashlib.sha256(i.encode()).hexdigest().upper() for i in lst]
在这里你传递 i
编码的值。