从引号中解包.csv行

时间:2018-12-14 21:42:11

标签: python pandas csv

.csv文件如下

col1, col2, col3
"a, b, c"
"d, e, f"

,我想从引号中解开行以正确读取pandas / Python中的文件。如R中的this重复问题所述,一个人可以读取两次.csv数据:1)解开辅助数据帧第一列中的数据,以及2)调用辅助数据帧第一列中的读取函数

在熊猫中最优雅的方式是什么?

2 个答案:

答案 0 :(得分:0)

您可以通过将quoting参数设置为3来关闭引号。然后删除所有报价。

data = pd.read_csv('file.csv', quoting=3)
for col in data:
    data[col] = data[col].str.strip('"')

答案 1 :(得分:0)

我想我会

  1. 以字符串形式读取原始的csv文件,并在其中进行替换。
  2. 将新字符串放入缓冲区。
  3. 使用熊猫将csv文件读取为缓冲区。

在代码中:

import io
import pandas as pd


with open('./csv_quotes.csv') as file:
    raw_csv = file.read()
    new_csv = raw_csv\
        .replace('\n\"', '\n')\ # replace "a,... => a,...
        .replace('\"\n', '\n')\ # replace ..., c" => ..., c
        .replace(', ', ',') # replace a, b, c => a,b,c
    sio = io.StringIO(new_csv) # 

    df = pd.read_csv(sio, sep=',')
    print(df.values)

输出:

[['a' 'b' 'c']
 ['d' 'e' 'f']]

注意:您可以使用正则表达式进行替换。看看this answer