首页 > 解决方案 > 处理字段值 pandas 内的逗号和双引号

问题描述

我想对csv文件进行一些操作,但是一开始就有问题。

我有一个这样的 csv 文件:

id,order_id,name1,name2,code,product_name,qty,price,transaction_datetime
1590621,S21001730,"ABC_FT_WM Boot","ABC-BOOT CLOSUR",,"[A2HYS1431]6" PREM BOOT,FQ",1,1529.20,"2021-03-06 18:48:41"

product_name 在字段值内有逗号和双引号。我试图解决这个问题。

这是我的代码:

import pandas as pd
import csv

df = pd.read_csv("test.csv",sep=',(?![^"]*\")',engine='python')
df.to_csv('test2.csv',na_rep='',sep=',', index = None)

但结果是:

id,order_id,name1,name2,code,product_name,qty,price,transaction_datetime
"1590621,S21001730,""ABC_FT_WM Boot"",""ABC-BOOT CLOSUR"",,""[A2HYS1431]6"" PREM BOOT,FQ"",1,,1529.20,""2021-03-06 18:48:41"",

这是失败的。所以我像这样更改我的代码:

import pandas as pd
import csv

n=9
df = pd.read_csv("test.csv",usecols=range(n),lineterminator='\n')

df.to_csv('test2.csv',na_rep='',sep=',', index = None)

我仍然失败,但比以前好多了。除product_name "[A2HYS1431]6" PREM BOOT,FQ" 变为 [A2HYS1431]6 PREM BOOT,"FQ""" 外,所有字段均符合标准

6" 去掉逗号, ,FQ 得到新的双引号。

我希望结果是这样的:

id,order_id,name1,name2,code,product_name,qty,price,transaction_datetime
1590621,S21001730,"ABC_FT_WM Boot","ABC-BOOT CLOSUR",,"[A2HYS1431]6" PREM BOOT,FQ",1,1529.20,"2021-03-06 18:48:41" 

有没有办法处理字段值内的逗号和双引号?

标签: pythonpandascsv

解决方案


推荐阅读