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

如何解决JSON与CSV互转时LOCATION字段值外围多余双引号问题

问题修复方案

你遇到的问题本质由两个原因共同导致:一是CSV解析时LOCATION字段内容被拆分为多列,二是坐标值为带单引号的Python字典格式,还混杂了多余的<code>标签,直接调用JSON方法必然报错。

修复步骤

1. 拼接被拆分的LOCATION字段

你给出的OrderedDict结构中,LOCATION内容被拆到了<code>LOCATION</code>、</code>COUNTRY_CODE<code>、空键三个位置,先把这三部分内容拼接得到完整的坐标字符串。

2. 清理冗余标签与符号

移除字符串中所有<code>、</code>标签以及多余的空格、转义符号。

3. 解析单引号字典

不要用正则直接替换单引号,很容易误伤内容里的合法单引号,使用ast.literal_eval可以直接解析Python格式的字典字面量,安全性和准确率都远高于手动替换。

可直接运行的代码示例

import ast
import json
from collections import OrderedDict

# 替换为你实际读取到的异常数据
bad_item = [OrderedDict([('<code>GROUP</code>', '<code>Net-10-172-192</code>'), ('<code>NAME</code>', '<code>IOT</code>'), ('<code>CIDR</code>', '<code>192.168.69.0/24</code>'), ('<code>DESCRIPTION</code>', '``'), ('<code>DOMAIN</code>', '<code>Default Domain</code>'), ('<code>LOCATION</code>', "<code>{'coordinates': [-80.25572"), ('</code>COUNTRY_CODE<code>', ' 37.11923]'), (None, [" 'type': 'Point'}</code>", '<code>US</code>'])])][0]

clean_item = {}
# 拼接并解析LOCATION字段
loc_part1 = bad_item.pop('<code>LOCATION</code>').replace('<code>', '')
loc_part2 = bad_item.pop('</code>COUNTRY_CODE<code>')
loc_part3 = bad_item.pop(None)[0].replace('</code>', '').strip()
full_loc_str = loc_part1 + loc_part2 + loc_part3
clean_item['LOCATION'] = ast.literal_eval(full_loc_str)

# 清理其他字段的冗余标签与符号
for k, v in bad_item.items():
    if k is None:
        clean_item['COUNTRY_CODE'] = v[1].replace('<code>', '').replace('</code>', '')
        continue
    clean_k = k.replace('<code>', '').replace('</code>', '')
    clean_v = v.replace('<code>', '').replace('</code>', '').strip('`')
    clean_item[clean_k] = clean_v

# 生成合法JSON
valid_json = json.dumps(clean_item, indent=2, ensure_ascii=False)
print(valid_json)

批量处理说明

如果文件中数千条数据的拆分规则都和示例一致,直接遍历所有CSV行执行上述处理逻辑即可,单文件处理耗时不会超过10秒。如果存在其他拆分规则,只要对应调整拼接逻辑就能适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:39:00