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

如何在Node.js中解析CSV中Python列表格式的字符串为数组?

解决Python生成的CSV列表在Node.js中JSON.parse报错的问题

问题原因

Python直接将列表写入CSV时,会生成Python风格的列表字符串(使用单引号),比如['47299', '8690901'],但JSON规范要求字符串必须用双引号,所以Node.js中用JSON.parse解析时会抛出语法错误。


方案一:从Python端修正(推荐)

直接在生成CSV时,将nace_codes序列化为标准JSON字符串,这样Node.js可以直接用JSON.parse解析。

修改Python代码:

  1. 导入json模块
  2. 在写入CSV时,对nace_codes使用json.dumps()转换为标准JSON格式

修改后的核心代码片段:

import json  # 新增导入

# ... 其他代码不变

formatted_data = enterprise.to_json()
# 对nace_codes进行JSON序列化,处理None的情况
nace_json = json.dumps(formatted_data['nace_codes']) if formatted_data['nace_codes'] else '[]'
writer.writerow([
    formatted_data['enterprise_number'], 
    formatted_data['vat_number'], 
    nace_json,  # 替换原来的formatted_data['nace_codes']
    formatted_data['tel'], 
    formatted_data['mobile'], 
    formatted_data['email']
])

这样生成的CSV中,nace_codes列会是标准JSON数组格式,比如["47299", "8690901"],Node.js端无需额外处理即可正常解析。


方案二:Node.js端兼容处理(无法修改Python代码时使用)

如果不能修改Python生成逻辑,需要在Node.js中对Python风格的列表字符串进行转换,再解析为数组。

实现思路:

  • 将字符串中的单引号替换为双引号
  • 处理None(Python的空值)为null或者空数组
  • 再用JSON.parse解析

修改后的Node.js代码片段:

parsedData.map((row, i) => {
    console.log(`${i} | ${row.enterprise_number}`);

    let nace_codes = [];
    if (row.nace_codes) {
        // 替换单引号为双引号,处理Python的None为null
        const formattedStr = row.nace_codes.replace(/'/g, '"').replace(/None/g, 'null');
        try {
            nace_codes = JSON.parse(formattedStr);
        } catch (err) {
            console.warn(`解析第${i}行nace_codes失败:`, err);
        }
    }
    console.log('Parsed value: ', nace_codes);
});

注意:这种方法依赖字符串格式的稳定性,如果Python生成的列表有特殊字符(比如包含单引号的字符串),可能需要额外处理,因此优先推荐方案一。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:45:36