有没有一种方法可以在pandas/python的csv文件中使用双引号来处理Pople?
我处理的是客户发送的文件,所以我们只需要花很大的力气才能更改发送的文件。有时,在自由文本字段中,我们会提到长度,使用双引号字符表示英寸。例如,文件可能如下所示有没有一种方法可以在pandas/python的csv文件中使用双引号来处理Pople?,pandas,csv,Pandas,Csv,我处理的是客户发送的文件,所以我们只需要花很大的力气才能更改发送的文件。有时,在自由文本字段中,我们会提到长度,使用双引号字符表示英寸。例如,文件可能如下所示 "count","desc","start_date","end_date" "3","it is tall","3/18/2019","4/20/2020" "10&q
"count","desc","start_date","end_date"
"3","it is tall","3/18/2019","4/20/2020"
"10","height: 108" is nice,","04/11/2016","09/22/2015"
"8","it is short","7/20/2019","8/22/2020"
我们正在使用python/pandas。当我使用以下命令加载它时:
import pandas as pd
df = pd.read_csv("sample.csv", dtype=str)
我得到:
我希望解决两个问题:
start\u date
的第二个值为04/11/2019
(开头不带逗号,结尾不带双引号)desc
的第二个值为height:108“很好,
(带英寸指示器)我知道正确的做法是使用
\“
获取转义引号的文件,但正如我所说,这将是一个很难获得的更改。您可以利用值由”、“
分隔的模式,并删除第一个和最后一个”
。如果自由文本字段包含“,此解决方案将中断,“
输出:
“计数”、“说明”、“开始日期”、“结束日期”
“3”、“它很高”、“2019年3月18日”、“2020年4月20日”
“10”,“身高:108”很好,“04/11/2016”,“09/22/2015”
“8”、“它很短”、“2019年7月20日”、“2020年8月22日”
删除每行中的第一个和最后一个“
”,并用分隔符读取\u csv
,“
输出:
计数说明开始日期结束日期
0 3它很高2019年3月18日2020年4月20日
1 10高度:108英寸很好,2016年11月4日2015年9月22日
2.8短于2019年7月20日2020年8月22日
import pandas as pd
import io
with open('sample.csv') as f:
t = f.read()
print(t)
t = '\n'.join([i.strip('"') for i in t.split('\n')])
pd.read_csv(io.StringIO(t), sep='","', engine='python')