【问题标题】:Problems reading CSV in Pandas with commas and apostrophes inside double quotes在双引号内使用逗号和撇号在 Pandas 中读取 CSV 时出现问题
【发布时间】:2021-10-28 04:52:00
【问题描述】:

我真的很难将一些杂乱的字符串数据从 CSV 文件读入 DataFrame。 我正在使用 Python 3.8.5 和 Pandas 1.1.3

我的 CSV 文件包含整数、日期和以双引号 " 字符结尾的字符串。前几行的示例如下:

像这样使用 pd 作为 Pandas 的实例:

import pandas as pd
import csv


myfilename = 'Input.csv'
myexpenses = pd.read_csv(myfilename, skipinitialspace=True, quotechar='"', quoting=csv.QUOTE_ALL)

一直给我:

ParserError: Error tokenizing data. C error: Expected 37 fields in line 3, saw 42

这显然是因为实际上有 41 个逗号分布在 37 个字段中。我不确定为什么 quotechar 语句没有处理这些。

如何将这些字符串作为单个字段条目处理?

我可能已经尝试过对这个函数进行十几种不同的调整,例如thisthisthis 等。

这些包括调整变量,如 quoting=csv.QUOTE_ALL 而没有结果。

我需要涉及 reg 表达式吗?

任何帮助将不胜感激 - 在此先感谢您。

编辑:添加完整代码。对于那些询问的人,这些是 CSV 文件的列和前五个输入行:

日期、员工、项目、费用、说明、单位、成本费率、成本金额、加价百分比、收费金额、计费、计费状态、提交状态、批准人、可报销、已支付、支付日期、收入帐户、费用帐户,类别,国家,采购税率,额外,Tax1 %,Tax2 %,Tax3 %,信用卡,支票号码,供应商账单号码,发票号码,客户,附件,备忘录,创建者,创建于,上次更新者,上次更新了

8/27/2021,"Lastname, Firstname","2021-123 - Bob & Bob (Bob's - New York, NY) Project - Support",Meals:Project Meals,Meals,1,43.64,43.64,0 ,43.64,True,Un Billed,Un-Submitted,,False,False,8/27/2021,,,Meals-Project,US Dollar,0,False,0,0,0,1234-56 - Lastname - 1234,,,,"Bob & Bob, Inc.",1,,"Lastname, Firstname",8/27/2021,"Lastname,名字”,2021 年 8 月 27 日

8/27/2021,"Lastname, Firstname","2021-123 - Bob & Bob (Bob's - New York, NY) Project - Support",Auto Expense:Fuel,Fuel,1,29.41,29.41,0 ,29.41,True,Un Billed,Un-Submitted,,False,False,8/27/2021,,,Fuel,US Dollar,0,False,0,0,0,1234-56 - Lastname - 1234,,,,"Bob & Bob, Inc.",1,,"Lastname, Firstname",8/27/2021,"Lastname,名字”,2021 年 8 月 27 日

8/27/2021,"Lastname, Firstname","2021-123 - Bob & Bob (Bob's - New York, NY) Project - Support",Airfare:Flight,Plane Ticket,1,658.4,658.4,0,658.4,True ,Un Billed,Un-Submitted,,True,False,8/27/2021,,,Flight,US Dollar,0,False,0,0,0,,,,,"Bob & Bob, Inc.",1,,"Lastname, Firstname",8/27/2021,"Lastname, Firstname",8/27/ 2021

8/26/2021,"Lastname, Firstname","2021-123 - Bob & Bob (Bob's - New York, NY) Project - Support",Meals:Project Meals,Meals,1,32.28,32.28,0 ,32.28,True,Un Billed,Un-Submitted,,False,False,8/26/2021,,,Meals-Project,US Dollar,0,False,0,0,0,1234-56 - Lastname - 1234,,,,"Bob & Bob, Inc.",1,,"Lastname, Firstname",8/27/2021,"Lastname,名字”,2021 年 8 月 27 日

8/26/2021,"Lastname, Firstname","2021-123 - Bob & Bob (Bob's - New York, NY) Project - Support",Meals:Project Meals,Meals,1,6.58,6.58,0 ,6.58,True,Un Billed,Un-Submitted,,False,False,8/26/2021,,,Meals-Project,US Dollar,0,False,0,0,0,1234-56 - Lastname - 1234,,,,"Bob & Bob, Inc.",1,,"Lastname, Firstname",8/27/2021,"Lastname,名字”,2021 年 8 月 27 日

【问题讨论】:

  • 这能回答你的问题吗? stackoverflow.com/questions/18039057/…
  • 你能告诉我们第 3 行吗?可能有一些 UTF 引号字符看起来像 " 但实际上是不同的字符。或者,有没有转义的内部引号,或者它的格式不正确
  • 给出前 5 行左右的确切示例以重现确切的错误。提供重现错误所需的完整代码,包括导入。
  • 是的,因为错误出现在第 3 行中,因此向我们展示之前行的一部分(它必须有效)并没有帮助。
  • 当然,我已经使用经过清理的输入文件添加了这些编辑。唯一的其他代码导入 Pandas 和 CSV,然后设置导入的 CSV 文件名。

标签: python pandas dataframe csv


【解决方案1】:

试试“csv.QUOTE_NONE”

import pandas as pd
import csv

myexpenses = pd.read_csv(myfilename, csv.QUOTE_NONE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    相关资源
    最近更新 更多