2017-08-01 172 views
-3

我想从Python中的CSV文件中读取数据,但找不到任何好的在线解决方案。从Python中的CSV文件读取

这是我到目前为止的代码:

import csv 

def defTakeOrder(): 
    listAvailable = [] 
    listOrder = input("Type your order in the format:\n'GTIN-8,Quantity...' repeated as necessary.\n If the quanitity is 1, still enter a 1 rather than leaving the space blank.\n") 
    listOrder = listOrder.split(",") 
    fileExcel = csv.reader(open("C:\Users\Sean\Documents\Year 12\CS\Summer\Book1.csv", newline = ""), delimiter=" ", quotechar="|") 
    for i in fileExcel: 
     listAvailable.append(i) 
    print(listAvailable) 


defTakeOrder() 

有人可以帮助我的代码从该读什么书?

在此先感谢

编辑: 很抱歉,但在地球上是什么原因导致这些downvotes?我试图高效地工作,这阻碍了我要求几天,这意味着我现在无法高效工作。有人可以解释是否有一个规则我打破或什么?

+1

乍看之下,该代码*确实*读取csv并将其放入列表中。有什么具体的破碎? – Will

+2

所以,你的方法有什么问题,它有什么作用,它做什么,不做什么,你期望什么,发生了什么问题,你试过了什么? –

+0

我收到“fileExcel =(...”中的第一个括号和第二个引号中的“delimiter =”“” – SeanOTRS

回答

-2

您不需要导入任何内容来读取CSV。此代码将读取一个CSV并创建一个列表。列表中的每个元素都是一个行,并且每个子列表中的每个元素都是CSV中的一个元素,因为row.split将返回一个列表。

file = "C:\Users\Sean\Documents\Year 12\CS\Summer\Book1.csv"  
csv = [] 
with open(file, "r") as text: 
    for row in text: 
     csv.append(row.split(",")) 
+1

您的解析在包含“1,2,3”的行上失败,这是第4列,它有一个逗号。“,5”。这是一个有效的CSV行,并且这种类型的内容是避免编写自己的解析器时的一个很好的理由。无论如何,OP似乎并不想从实际的文件中读取数据。 – jpmc26

+0

我确实需要从实际文件中读取,它是产品数据库的模型。不写你自己的解析器是什么意思?我有点困惑。 – SeanOTRS

+0

@SeanOTRS我的意思是,当以文本格式存储数据并从中读取数据时,您应该*非常强烈地*倾向于使用现有的,众所周知的标准以及这些标准格式的经过良好测试的现有库。这个答案中的“解析器”是'row.split(“,”))',它使用原始文本操作来尝试将行解析为单独的列。我上面的示例演示了尝试在标准的格式良好的CSV数据上被破坏。大多数标准格式都有转义机制,允许您使用格式认为特殊的字符,并且像这样简单的尝试会破坏它们。 – jpmc26