Python错误地读取大量CSV文件(60MB)

2024-04-18 23:10:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个类函数来打开/分析一个大的CSV文件(60MB)。你知道吗

在CSV文件中,有13个“行”(或类别,例如:产品、问题、消费者投诉、公司名称),每行下面有数千个单元格,其中充满了信息。你知道吗

这是我现在的代码:

class Company_Data:
    def __init__ (self, ID, Company, Company_Response):
        self.ID = ID
        self.Company = Company
        self.Company_Response = Company_Response

def Response_function (self):
    if self.Company_Response == "In progress":
        return "being resolved"
    elif self.Company_Response == "Closed with explanation":
        return "resolved with an explanation"
    else:
        return ("I don't know what sort of response the "+ self.Company + ""+ " gave to the complaint ID " +self.ID+ " .")


companies_list = []

company_file = open("Consumer_Complaints.csv","r")
for line in company_file:
    company_data =line.strip().split(sep=",")
    company = Company_Data(company_data[1], company_data[4])
    companies_list.append(company)
company_file.close()


for x in companies_list:
    print (x.Response_function())

尽管程序有时会打印带有正确公司名称的语句,例如:

“我不知道Transworld Systems INC对投诉ID 9999有何回应”

它还打印出如下行:

“我不知道4/23/2015对投诉ID 9999给出了什么样的答复”

在13行中的4行中,有空白单元格,这可能是日期 和公司时间搞混了,但我不能百分之百确定原因 这个错误。你知道吗


Tags: 文件csvself名称iddatareturnresponse
1条回答
网友
1楼 · 发布于 2024-04-18 23:10:30

首先,您提到的属性(产品、问题、消费者投诉、公司名称)最好描述为列(通常是csv文件的第一行)。下面的每一行都是一行,行的分隔部分是单元格。你知道吗

您用来读取数据的方法,即简单地读取行,并用逗号分隔它们,并不能适用于每个CSV文件。CSV文件可以在单元格中包含逗号,更不用说在文件中分隔行的字符也可能包含在单元格的值中,然后必须处理这些单元格的转义,以及用于转义的字符的转义(取决于此CSV的来源,这可能以一种不寻常的方式完成)。关于如何格式化CSV文件,还没有一个正式的规范,但是有一个很接近的文档:https://tools.ietf.org/html/rfc4180但是如果你有一个声称是CSV文件的东西,那么一定有一个合理的方法来读取数据。你知道吗

我在调试方面的第一个想法是输出列表中的值,看看它们是否与CSV文件匹配。他们可能不会,在这种情况下,你在那里的其他东西永远不会正常工作。你知道吗

您可能需要使用一些东西来正确解析CSV文件。你知道吗

相关问题 更多 >