【发布时间】:2016-02-19 12:39:11
【问题描述】:
这里是Python初学者;
我有一个来自 Excel 的 CSV 文件。我想将条目解析为 JSON 字符串,以便与内部应用程序的 API 一起使用。
该脚本使用两个 For 循环,一个从 CSV 读取条目并将它们添加到字典中,第二个将字典条目中的数据替换为模板字符串,该字符串通过转换为 JSON 字符串来为 API 请求正确格式化。
这是一个填充字典条目的示例 - 格式对应于 API 规范;
{'description': 'Mrs Davies 7M3/It', 'resourceId': '16', 'userId': 26, 'accessories': [], 'startReminder': '', 'recurrenceRule': {'monthlyType': 'null', 'interval': 2, 'type': 'weekly', 'weekdays': [1], 'repeatTerminationDate': '2016-05-29T08:50:00'}, 'title': 'Mrs Davies 7M3/It', 'resourceID': '16', 'endDateTime': '2016\xad02\xad22T10:50:00', 'participants': [], 'customAttributes': [], 'endReminder': '', 'startDateTime': '2016\xad02\xad22T09:50:00', 'resources': ['16'], 'invitees': []}
如您所见,startDataTime 和 endDateTime 的连字符为十六进制值。
'endDateTime': '2016\xad02\xad22T10:50:00'
如果我将此值作为变量 (tempData) 传递,如下所示;
res_data = json.dumps(tempData)
我得到了错误;
Traceback (most recent call last):
File "api.py", line 70, in <module>
res_data = json.dumps(tempData)
File "/usr/lib/python2.7/json/__init__.py", line 243, in dumps
return _default_encoder.encode(obj)
File "/usr/lib/python2.7/json/encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python2.7/json/encoder.py", line 270, in iterencode
return _iterencode(o, 0)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xad in position 4: invalid start byte
脚本一直运行到现在没有问题。我试图重新编码通过 json.dumps 解析的数据,但似乎不起作用。
有没有办法从字典中将数据编码为 utf8?
提前致谢。
【问题讨论】:
标签: python json csv dictionary