Amazon AWS Data Pipeline 提供一个 CSV 文件作为 MySQL 数据库的输出。在 CSV 中,有一个包含 JSON 的字段,我们尝试分别使用 Python 的内置 CSV 和 JSON 阅读器对其进行提取和解码。但是,由于 CSV 的生成方式,JSON 不以引号开头,并且 CSV 解析器仅返回该 CSV 字段的 JSON 中的第一个“{”。
我们认为 CSV 阅读器会看到第一个“{”,然后会看到一个换行符,它将其解释为 CSV 行的结尾。如果 JSON 包含在引号中,则脚本可以正常工作。请参阅以下代码:
with open(args.env_vars[0] + '/click_stream_source.csv', 'r') as csvFile:
csvReader = csv.reader(csvFile, delimiter = ',')
with open(args.env_vars[1] + '/clickstream_target.csv', 'wb') as csvTarget:
csvWriter = csv.writer(csvTarget, delimiter = ',')
for row in csvReader:
json_data = json.loads(row[5])
示例 CSV 是:
495019,,8239,E3728E7D480248AA2EB5D5BB5C467737,67.84.254.6,{
""requests"": [
{
""queryString"": null,
""time"": ""2013-06-14T11:53:40Z"",
""userAgent"": ""Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"",
""requestURI"": ""/xxxxx/xxxx/xxxx.xxxxxxx"",
""class"": ""xxxxx"",
""params"": {
""action"": ""xxxxx"",
""controller"": ""xxxx""
},
""isAjaxRequest"": false
}]}
我们得到一个
ValueError:期望对象...
json.loads() 方法在哪里