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

如何将含带引号行的CSV正确导入Pandas DataFrame?

解决CSV导入Pandas时引号内内容被拆分的问题

你的CSV结构如下:

project, location, badness
foo, N/A, 0
bar, 'path/to/file:[7,23]', 120

之前用pd.read_csv(filename, quotechar="'", sep="\s*,\s*")导入时,引号里的逗号被当成了分隔符,导致location列拆分、出现冗余列。问题出在sep="\s*,\s*"——这个正则分隔符会先把所有逗号(包括引号内的)都当作分隔符,之后才处理引号,自然识别不了引号内的完整内容。

正确的导入方式有两种:

方法一:默认逗号分隔+忽略逗号后空格

直接用逗号作为分隔符,通过skipinitialspace=True参数忽略逗号后面的空格,同时保留quotechar识别单引号包裹的内容:

import pandas as pd
df = pd.read_csv(filename, quotechar="'", skipinitialspace=True)

这样Pandas会先识别单引号包裹的内容,把里面的逗号当作普通字符,再处理列之间的逗号分隔,同时自动跳过逗号后的空格,最终location列会完整保留'path/to/file:[7,23]'的内容,也不会出现冗余列。

方法二:Python引擎配合正则分隔符(可选)

如果一定要用正则分隔符,需要指定engine='python',并调整正则表达式匹配不在单引号内的逗号:

import pandas as pd
df = pd.read_csv(filename, quotechar="'", sep="(?<!'),\s*(?!')", engine='python')

这里的正则(?<!'),\s*(?!')表示只匹配不在单引号前后的逗号,再忽略后面的空格。不过第一种方法更简洁高效,优先推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 17:44:52