You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将CSV转换为指定格式字符串并用于REST API PUT请求?

Solution for Transforming CSV Key-Value Pairs to REST API PUT Body

Let's walk through how to handle this conversion and integrate it into your PUT request properly—no messy string formatting needed, since we can work directly with Python dictionaries (which json.dumps handles seamlessly).

Step 1: Parse the CSV-like String into a Dictionary

Your input string is a space-separated list of key-value pairs, starting with a header pair (Key Value) that we can ignore. Here's how to extract the relevant pairs and turn them into a dictionary:

# Your input CSV string
csv_input = "Key Value Key1 Value1 Key2 Value2 Key3 Value3"

# Split the string into individual elements
parts = csv_input.split()

# Extract pairs starting from the 3rd element (index 2) and convert to a dict
# Use .lower() if you need keys to be lowercase like your example ("key1" instead of "Key1")
variable_dict = {k.lower(): v for k, v in zip(parts[2::2], parts[3::2])}

# Result: {'key1': 'Value1', 'key2': 'Value2', 'key3': 'Value3'}

Note for Edge Cases:

If your values contain spaces (e.g., Key2 "Hello World"), the simple split() method will break. For that scenario, use Python's built-in csv module with a custom delimiter:

import csv
from io import StringIO

csv_input = 'Key Value Key1 Value1 Key2 "Hello World" Key3 Value3'
reader = csv.reader(StringIO(csv_input), delimiter=' ')
# Filter out empty strings from split results
parts = [item for item in next(reader) if item]
variable_dict = {k.lower(): v for k, v in zip(parts[2::2], parts[3::2])}

Step 2: Build the PUT Request Body

Now, integrate this dictionary directly into your JSON payload. Important: Don't convert variable_dict to a string first—json.dumps will handle converting the dictionary to valid JSON syntax automatically.

Here's the full code for the PUT request:

import json
import urllib.request

# Your existing variables
somedata = "your_id_value_here"  # Replace with actual ID data
url = "your_api_endpoint_here"   # Replace with your API URL

# Step 1 result from above
variable_dict = {'key1': 'Value1', 'key2': 'Value2', 'key3': 'Value3'}

# Build the JSON body
body = json.dumps({
    "id": somedata,
    "value": variable_dict
})

# Convert body to bytes (required for urllib)
body_bytes = body.encode('utf-8')

# Create the PUT request, set the correct content-type header
request = urllib.request.Request(
    url=url,
    data=body_bytes,
    method='PUT',
    headers={'Content-Type': 'application/json'}
)

# Execute the request (handle response as needed)
try:
    with urllib.request.urlopen(request) as response:
        print(f"Response status: {response.getcode()}")
        print(response.read().decode('utf-8'))
except urllib.error.HTTPError as e:
    print(f"HTTP Error: {e.code} - {e.read().decode('utf-8')}")

Why This Works:

  • By using a dictionary for variable_dict, we avoid manual string formatting errors (like missing quotes or commas).
  • The Content-Type: application/json header tells the API server we're sending JSON data, which is critical for PUT requests to be processed correctly.
  • Error handling with try/except helps catch common issues like invalid endpoints or server errors.

内容的提问来源于stack exchange,提问作者Naba Ansari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:07:18