[英]How to Encode to Base64 in python?
嘿,我正在嘗試將某些內容編碼為 base64 但我收到無效格式錯誤我不知道為什么有人可以幫助我:)
creqBytes = bytes(f'{"threeDSServerTransID":threeDSServerTransID,"transStatus":"Y","acsTransID":acsTransID,"messageType":"CRes","messageVersion":"2.1.0"}', 'utf-8')
creq2 = base64.b64encode(creqBytes).decode("ascii")
print(creq2)
ValueError: Invalid format specifier
錯誤消息來自您的第一行。 這是因為在字符串之前有一個f
表示這將是一個帶有f 字符串格式的字符串。 但是,您沒有在字符串中放置任何 f 字符串格式。 因此出現錯誤消息。
我能夠通過刪除f
來運行它。 這是我的測試:
import base64
creqBytes = bytes('{"threeDSServerTransID":threeDSServerTransID,"transStatus":"Y","acsTransID":acsTransID,"messageType":"CRes","messageVersion":"2.1.0"}', 'utf-8')
print(creqBytes)
# b'{"threeDSServerTransID":threeDSServerTransID,"transStatus":"Y","acsTransID":acsTransID,"messageType":"CRes","messageVersion":"2.1.0"}'
creq2 = base64.b64encode(creqBytes).decode("ascii")
print(creq2)
# eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6dGhyZWVEU1NlcnZlclRyYW5zSUQsInRyYW5zU3RhdHVzIjoiWSIsImFjc1RyYW5zSUQiOmFjc1RyYW5zSUQsIm1lc3NhZ2VUeXBlIjoiQ1JlcyIsIm1lc3NhZ2VWZXJzaW9uIjoiMi4xLjAifQ==
但是,我懷疑這不是您想要做的。 我的猜測是您想在字符串中包含 Python 中的一些變量。 如果是這種情況,那么 f 字符串將如下所示:
import base64
threeDSServerTransID = 2
acsTransID = 3
creqBytes = bytes(f'{{"threeDSServerTransID":{threeDSServerTransID},"transStatus":"Y","acsTransID":{acsTransID},"messageType":"CRes","messageVersion":"2.1.0"}}', 'utf-8')
print(creqBytes)
# b'{"threeDSServerTransID":2,"transStatus":"Y","acsTransID":3,"messageType":"CRes","messageVersion":"2.1.0"}'
creq2 = base64.b64encode(creqBytes).decode("ascii")
print(creq2)
# eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6MiwidHJhbnNTdGF0dXMiOiJZIiwiYWNzVHJhbnNJRCI6MywibWVzc2FnZVR5cGUiOiJDUmVzIiwibWVzc2FnZVZlcnNpb24iOiIyLjEuMCJ9
f 字符串的這種格式看起來容易出錯並且其他人難以閱讀。 我懷疑將數據作為 Python 字典並將其輸出為 JSON 格式,然后再進行 base64 編碼可能更容易理解和閱讀。 這看起來像:
import base64
import json
threeDSServerTransID = 2
acsTransID = 3
var1 = {
"threeDSServerTransID": threeDSServerTransID,
"transStatus": "Y",
"acsTransID": acsTransID,
"messageType": "CRes",
"messageVersion": "2.1.0"
}
var2 = json.dumps(var1)
print(var2)
# '{"threeDSServerTransID": 2, "transStatus": "Y", "acsTransID": 3, "messageType": "CRes", "messageVersion": "2.1.0"}'
var3 = base64.b64encode(var2.encode())
print(var3)
# b'eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IDIsICJ0cmFuc1N0YXR1cyI6ICJZIiwgImFjc1RyYW5zSUQiOiAzLCAibWVzc2FnZVR5cGUiOiAiQ1JlcyIsICJtZXNzYWdlVmVyc2lvbiI6ICIyLjEuMCJ9'
print(var3.decode('ascii'))
# eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IDIsICJ0cmFuc1N0YXR1cyI6ICJZIiwgImFjc1RyYW5zSUQiOiAzLCAibWVzc2FnZVR5cGUiOiAiQ1JlcyIsICJtZXNzYWdlVmVyc2lvbiI6ICIyLjEuMCJ9
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.