通过API传递csv

n3h0vuf2  于 2023-03-05  发布在  其他
关注(0)|答案(2)|浏览(143)

我正在尝试通过API传递一个csv,如下所示:
csv如下所示:

field_1, field_2, field_3
1, 3, 7

推送代码是:

with open("sample_csv.csv") as f:
    data = {"file": f}
    print(data)
    headers = {
        "Content-Type": "text/csv",
        "File-Type": "POS",
        "File-Key": "somekey",
    }

    r = requests.post(endpoint, data=data, headers=headers)

然而,当我从另一端的Lambda读到它时,我得到了这个:

b'file=field_1%2C+field_2%2C+field_3%0A&file=1%2C+3%2C+7'

当我通过chardet运行上面的字符串时,它告诉我它是ascii,但我不知道如何转换它
编辑:lambda函数代码:

def main(event: dict, context) -> dict:
  body = base64.b64decode(event["body"])
  print(body)
8xiog9wr

8xiog9wr1#

这个问题更像是字符串编码问题。
数据似乎是以url编码格式编码的。您可以使用urllib.parse库分析字符串并提取数据。
试试这个:

import urllib.parse

def main(event: dict, context) -> dict:
  body = urllib.parse.parse_qs(event["body"]) // decode the encoded string, instead of base64
  print(body)
jk9hmnmh

jk9hmnmh2#

想明白了,在这里给后人加上答案

decoded_event = base64.b64decode(event["body"])
parsed_event = up.parse_qs(x.decode())["file"]

之后parsed_event是一个列表,每个元素是csv的一行,您可以根据需要对其进行操作。

相关问题