我的.csv文件如下所示:

"col1","col2"
"1","text1"
"2","This a "TEXT". However, I cannot parse it."

即,它在值中包含逗号和引号. 在read_csv()函数中使用sep参数会在每行的开头和结尾加上引号:

import pandas as pd

df = pd.read_csv('test.csv', sep = '","', engine = 'python')
df


    "col1   col2"
0   "1      text1"
1   "2      This a "TEXT". However, I cannot parse it."

我可以做些什么来正确读取我的文件?

推荐答案

在你有趣的 idea 的基础上,你还可以添加第一个和最后一个引号作为分隔符,然后删除不需要的列:

data = io.StringIO('''"col1","col2"
"1","text1"
"2","This a "TEXT". However, I cannot parse it."
''')

df = pd.read_csv(data, sep=r'","|^"|"$', engine='python').iloc[:, 1:-1]

输出:

   col1                                        col2
0     1                                       text1
1     2  This a "TEXT". However, I cannot parse it.

这样做的好处是,您可以直接获得正确的类型(如果需要):

df.dtypes

col1     int64
col2    object
dtype: object

regex demo

Python相关问答推荐

单击Cookie横幅错误并在Selenium中启用搜索栏

X射线扫描显示Docker中的pip漏洞,尽管图像中未安装pip

只需使用Python在图像中保留 colored颜色 范围区域

计算每月过go x年的平均值

如何将自动创建的代码转换为类而不是字符串?

情节生成的饼图文本超出页面边界

在两极中实施频率编码

如何在不使用字符串的情况下将namedtuple属性传递给方法?

如何编写一个正规表达式来查找序列中具有2个或更多相同辅音的所有单词

如何处理必须存在于环境中但无法安装的Python项目依赖项?

使用Beautiful Soup获取第二个srcset属性

可变参数数量的重载类型(args或kwargs)

组/群集按字符串中的子字符串或子字符串中的字符串轮询数据框

为什么NumPy的向量化计算在将向量存储为类属性时较慢?'

如何并行化/加速并行numba代码?

如何更新pandas DataFrame上列标题的de值?

Polars asof在下一个可用日期加入

剪切间隔以添加特定日期

为什么调用函数的值和次数不同,递归在代码中是如何工作的?

交替字符串位置的正则表达式