在屏幕上显示输出时出现UnicodeEncodeError

-1 投票
1 回答
49 浏览
提问于 2025-04-13 13:55

我在S3上有一个JSON文件,这个文件的名字里有一些动态的分隔符,然后是JSON数据本身。我想在从S3读取文件的时候去掉这些字符。

下面是一个示例数据:

文件名 XYZ_445643_Split0_A.json
数据 445643_Split0_A##{"Data":[{..},{..}]}

我正在尝试用Python读取这个文件。

import boto3
s3 = boto3.client("s3") 
response = s3.get_object(Bucket=some_bucket,Key=some_bucket/XYZ_445643_Split0_A.json)
data = response["Body"].read().decode("utf-8") 
data = data.split('##')[1]

在屏幕上打印输出时出现了以下错误:

UnicodeEncodeError: 'charmap' codec can't encode characters in position: character maps to undefined

1 个回答

-1

你忘了把字符串转换成json格式了

# -*- coding: utf-8 -*-
import json

rr = '445643_Split0_A##{"Data":[{"key": "value"},{"key1": "value1"}]}'
ss = json.loads(rr.split('##')[1])
print(ss["Data"])
print(ss["Data"][0])

for i in ss["Data"]:
    print(i)

for k,v in ss.items():
    print(k,v)

#[{'key': 'value'}, {'key1': 'value1'}]
#{'key': 'value'}
#{'key': 'value'}
#{'key1': 'value1'}
#Data [{'key': 'value'}, {'key1': 'value1'}]

撰写回答