【问题标题】:How to decode a byte array to string array in Python如何在 Python 中将字节数组解码为字符串数组
【发布时间】:2021-09-17 03:44:06
【问题描述】:

您好,我使用称为 fernet 的加密算法来加密数据库中的值。我想检索那些解密的值。返回的数组是一个字节数组,但我想对其进行解码。它似乎不起作用。我收到此错误:

Traceback (most recent call last):
  File "C:\Users\d\OneDrive\Bureaublad\Assignment8\CDMS.py", line 51, in <module>
    get_clients()
  File "C:\Users\d\OneDrive\Bureaublad\Assignment8\CDMS.py", line 41, in get_clients
    print(arr[i].decode())
TypeError: list indices must be integers or slices, not bytes

这是我试图解码的数组:

[(b'gAAAAABg5EBDnm6LZdHNzzjnDlFcA80SeS1s-wXhKx_opwOm0vSNsfcxheZC4abQ-qvifmxxbCT8gGy2O1dz-76gx3_ALVmeZQ==', b'gAAAAABg5EBD1k2kpmYaAI0PNfjHondg5mB9RwxoIxVqAkfZcAeYrK-H4oqyYjV9WcHFN0CF7Xf0dN2rAXKrkAq-myyfNUplSg==', b'gAAAAABg5EBDJrUQazdiAdf4yejxIwzZHSln-hAcYLkh27-7HO5gE8XjHZjUz3Y2-lHoDIINSAzUt10J93eZ2EeCNUGA1mVrgw==', b'gAAAAABg5EBDp5znqWT87IMASAjDuhMtB7uMV2rezOEQzy_O4ka8R8Dn0fCkZhajVBIQ3S0-MQiM2Mq0qS8JbKCD_rZhbaFPcA==', b'gAAAAABg5EBDZ3YdqhKFRZWQeKP3VUvaVWp-pmSub2aZtQGIpirZ6Pi9zplxdqCindAOHJIQrlcjAr_FG_vnH8U89_bx7FjX2Q==', b'gAAAAABg5EBDjIcwfpyMYXxoEK9XZjJEDyFM3sWfpM61hgAIOf4cNTj1etS1nCMsLIZtKIrF5wSRkmzP_tiXyDolisVkjr6uuA=='), ('gAAAAABg5EDjNQV_tNHuRRkZvdLDfnI20iGZ0Cpzv--1Xct0brLjCOlqnt0ZOU0AYe-tbQ390yIF2B-xlDGuP1-isAtgkWtGTQ==', 'gAAAAABg5EDjC84Zs7HPm1zPe9O2sWNX_HSf3pZeyivmqaPC-VYu5qely818-srsNOtVYtNoGCineThtqQuEC7vjteYV3sHIjA==', 'gAAAAABg5EDj-rUfVVvzObgt4HcgUr7UczgKTrdQyim-ZIY9AeFFGpreZeUS0G9ojkqX_o1AeDyUkcZ4mKIVwoK1dSOINPcp1Q==', 'gAAAAABg5EDjRwttFLM-AhzcFPsKX_cZv9BXnZd__wUH2fRudsFCTwwGnQxhWgxNjNN42zUs_ig6iVmLOJVZRJWno5LzRNQuVQ==', 'gAAAAABg5EDjyAbkEspirSsfj9tzwk5nwoR1rTP9QLjFSOO43Ju3eA1sBEiyTzn_yqpN8O67efYH1F7cEIrK9ne8D9zIRlg_RA==', 'gAAAAABg5EDj0Cgif60GqnxTu-_sd5gnFZvgvNyUZLoyh_QDRtq0ZHihaWiWv9ck9WlI1dKPKeg4nddFHep4lhb0YslRg7ZMhA=='), ('gAAAAABg5EOIDTUoHx9go4zl2J_WEcIcTKlCICNDGm241Izle6lH4BekWq6xH8i5IkhaSZPz82ADlQSyVAhhmCtu8FPN4sixOg==', 'gAAAAABg5EOIwgZcgSDSI0M4y9-faMjWBXtyx-GsJHmVV6P8QEru6wWMqPu0KFRFJB8CscVA8PtazieIcjcFqnpP_GTsG7Zebw==', 'gAAAAABg5EOIUa-sJK-76B45cAMZ-Vpog6KouDdo7p56Tmyq4GwF4Cw5ANALF-xckR52gpN1B6_YCY6V5x642lyKMLbzZh3O6A==', 'gAAAAABg5EOIm6UpODzgfb9sxJujrNtaPRDJS_GjXnS9jNHAb4wN3aQljZAKARboQiRvG1WYkVLCetaNN8jOSgF15tWgYmugNQ==', 'gAAAAABg5EOIOQ9mB2ONC-0HCXER4xsCyBxRRcDVRoe6WICyQJvS1ZpdgI2UjASL4yYvRjoLxyRm03Ka0o4iuPoTYIOk7JOnIA==', 'gAAAAABg5EOIt6wbW5vS2PrZjeu7RhBioL-U_c63nXZLJRH1gajaaV6kzbsIHLSFYcawXiwZ75sUnQTFj5JPtMlTFj8TRo80nw=='), ('gAAAAABg5EQXGsA0VtAientcwIOpL6igK7fan8lYGKlAbyEpEg4sH4JoHmOmYN4vTfZxXiS_E1Jn_me-L_xpbqgtC9z2ihPnWQ==', 'gAAAAABg5EQXDij9NMYOva_CTBXsPZMT8rGiEPZnHOuFbjIHHX2Wi46DOFMtEHy6O1MP7HimMJsPRkXgIrb7MGr610clFlhjRg==', 'gAAAAABg5EQXupxCcXLmtqjskNWx9TQVaF-ZHovEhv1g6qNA8zDkjY_4rA2Utk8sFkaaJH86pBuyIFmtGZ1i47zr0FufPneJcQ==', 'gAAAAABg5EQX6qWDg3eBdr4Q2YT6n5Zgy6UwLQFrB-5C-lXjoIu8NjK14zh87B8K_IAhjGN9VRJLskQMN8BtoCo4ZopoS1AqhQ==', 'gAAAAABg5EQXBUIZLqjgVMHauf279CbtMzam4yIaZHSO6-cOC8-0t_VTjgG7mpjcujMgTLeOFwBF_mwIHRpG8HubGMUnjbnQ4A==', 'gAAAAABg5EQXNCIO8OmZA5vsULGgagHsTE-KM5LeEOMjVJ4SzkAtev1DsbYQmST98FmHOUwolR2WbDw2pK11J9C292Jvil_nnQ=='), ('gAAAAABg5EQjygSazmI5VnieVQG1cAsvgsm_u7tHE9X9CevMXqIEcWbe1SOK5wRDza9LXXn_NbCaffJXrq4Dz9BcZh96mh9aqQ==', 'gAAAAABg5EQjEhshfY6M7Yqp4Nm4EE1-Cz7B6P8m7F7jA99qk3D3U3W4ejWz576t5Qg1uBYWclY6NI_SouQ2cGH7PXEdjv_4Gw==', 'gAAAAABg5EQjKzUAlURxaoeAiDAAiVNIvgKE3r8U0fwFQWKtUWSTTAe0RugxV8_QYDqOndxVBxhrRsWDTP1p2Kzbn_do9T7Zfg==', 'gAAAAABg5EQj8UYXm2nqqsrN2Xh5y7L0h1uezTzL-WFZxekurC_Z4VcZfuOVKE5nFlFWfHu6x0OUer1j9N1bIZPVvMY_6_NsSg==', 'gAAAAABg5EQj1_sXfsbRtX24ZnY2rjoorebkZp1010W4wtssa2T6ZJxrzQjHr1ELYbB77Mtm_w_euihEoXigkhZhQXkkTysC6Q==', 'gAAAAABg5EQjeHuoLttV3wRj9DgIVseVvdMmYmWX3-D-UIckrjrizKM6N6OSpq98rPkk9DCutqgW9Jup2KD4bshhCtr8ipO1-g=='), ('gAAAAABg5EVhxeWhA7-oBZPT93nSe3p6vvxqcysxOjdyGyVNQdBwdtM2heHrhNnNSes8yang0Cx9vgBIsU7Yjrfdgz8tOWpK_A==', 'gAAAAABg5EVhdtXop2FNWsZSndOxQ3iEuJQyfI1flL0swLpcJKKTjBlEZhWpwoB3XTO2STYRVrimyEljZs751aVgveF0-rpEpA==', 'gAAAAABg5EVhyWQRkpFOd6Y-_OYqDJX5FVfpYXmd_2SKMZd-EPFYqOu5s47C7lw23zs4eHFVeEF0tSnSpr58rW6hWnxlOnjhnQ==', 'gAAAAABg5EVhCmgEjitk1cutyI5Nn5qYFsh0LRd3-uBJekPrZFoJb6S7hODtwNP-cQoV8R6u5eRLdUOeqffwCKIbBPYA9_lyTQ==', 'gAAAAABg5EVhKZggbtmupc2FqzfbSREmsws-MFYTEX-kGwfw-JJmBOh_7RJnTa-23HWJQtfChSWWuXzsxULJ5vI289c0BVIqrw==', 'gAAAAABg5EVhy8aowZUiuX6M2IPW35XFZNBueXDd_JFal39ViFmg6avpbkvs0mhVzpqVvXjNcMmr3QbNeXf3daLCDa7_KdCmmg==')]

这是我试图解码的代码:


def get_clients():
    arr = []
    retrieved_vals = ""
    c.execute("SELECT * FROM client")
    arr = c.fetchall()
  
    i = 0
    for i in arr[i]:
        print(arr[i].decode())

我能做什么?

【问题讨论】:

  • 你能解释一下for i in arr[i] 是什么意思吗?
  • 首先...为什么?其次, fetchall() 返回一个记录列表,其中每条记录都是一个元组。您正在遍历元组。第三,您正在覆盖 i 变量。
  • 也许你的意思是:for element in arr: print(element.decode)
  • 在您的示例数组中,只有第一个元组包含字节,其余都是字符串。

标签: python arrays decode


【解决方案1】:

Arr 是一个带有编码字符串的列表中的元组。 所以你的for 需要看起来像这样:for i in arr[0]: print(i.decode())

【讨论】:

  • Python 区分大小写。 arr 是一个元组。 Arr 未定义。
猜你喜欢
  • 2017-01-05
  • 2018-06-25
  • 2016-12-08
  • 2012-07-07
  • 1970-01-01
  • 2021-07-09
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
相关资源
最近更新 更多