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

如何用Python csv库提取每行的ID与URL两个独立值(含数组型URL)

解决CSV读取时URL字段拆分错误的问题

你的CSV文件中URL字段存在两种格式:单个字符串或带转义双引号的JSON数组字符串,常规csv.reader会误将数组内的逗号识别为字段分隔符,导致拆分错误。以下是两种可行的解决方案:

方案1:配置csv.reader识别转义字符

由于你的URL字段内的双引号使用反斜杠\转义,只需给csv.reader指定escapechar='\\'参数,就能让它将整个URL字段视为单个元素读取:

import csv

def loadList(fileName):
    li = list()
    # 使用with语句自动管理文件,无需手动close
    with open(fileName, "r", newline='') as inpFile:
        # 设置escapechar识别反斜杠转义的双引号
        csvreader = csv.reader(inpFile, escapechar='\\')
        next(csvreader)  # 跳过表头行
        for row in csvreader:
            object_id = row[0]
            url = row[1]
            li.append({"objectId": object_id, "url": url})
            print(f"ID: {object_id}, URL: {url}\n")
    return li

执行后,第二行数据会被正确解析为:

  • ID: 2,URL: "["SomeUrl2","SomeUrl3"]"(原始字符串形式)

方案2:转为Python对应类型(可选)

如果需要将URL数组字符串转为Python列表,可结合json模块解析(因为你的数组格式符合JSON规范):

import csv
import json

def loadList(fileName):
    li = list()
    with open(fileName, "r", newline='') as inpFile:
        reader = csv.DictReader(inpFile, escapechar='\\')
        for row in reader:
            object_id = row['objectId']
            url = row['url']
            # 尝试解析JSON,失败则保留原字符串
            try:
                url_data = json.loads(url)
            except ValueError:
                url_data = url
            li.append({"objectId": object_id, "url": url_data})
            print(f"ID: {object_id}, URL: {url_data}\n")
    return li

这种方式下:

  • 第一行URL保持为字符串"someUrl1"
  • 第二行URL转为Python列表["SomeUrl2", "SomeUrl3"]

为什么原代码会出错?

csv.reader默认不处理反斜杠转义的双引号(默认escapechar=None),因此会将URL字段内的逗号当成字段分隔符,导致第二行被错误拆分为多个元素。设置escapechar='\\'后,反斜杠后的双引号会被视为字段内的普通字符,不会触发字段结束。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:53:01