2017-08-01 9 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

関連する問題