-1

次のような約4000行のcsvファイルがあります。

itemList.append(Item( 'SSCATALOG',  1,  "M" ,18 ,2))

itemList.append(Item( 'PTPC36200',  1,  "Z" ,19 ,8))

そして、次のようなクラス:

class Item:
  def __init__(self, pid, aisle, bay, hits, qtyPerOrder):
    self.pid = pid
    self.aisle = int(aisle)
    self.bay = bay
    self.hits = int(hits)
    self.qtyPerOrder = int(qtyPerOrder)

itemListこのデータをusingというリストに取り込もうとしていjythonます。どんな助けでも素晴らしいでしょう。

4

3 に答える 3

0

データがコンマ区切り値 (CSV) のように見えません。むしろ、部分的な Python コードのように見えます。データ ファイルが文字通り次のようになっている場合:

itemList.append(Item( 'SSCATALOG', 1, "M" ,18 ,2))

itemList.append(Item( 'PTPC36200', 1, "Z" ,19 ,8))

次に、 execを使用してスクリプトにロードできます。

class Item:
  def __init__(self, pid, aisle, bay, hits, qtyPerOrder):
    self.pid = pid
    self.aisle = int(aisle)
    self.bay = bay
    self.hits = int(hits)
    self.qtyPerOrder = int(qtyPerOrder)

with open('data', 'r') as f:
    itemList = []
    exec f
    print(itemList)

収量

[<__main__.Item instance at 0xb770cb4c>, <__main__.Item instance at 0xb770cb6c>]
于 2012-09-19T18:08:55.370 に答える
0

データは CSV ではありません。これはある種の不完全な Python コードです。あなたの言うことから、最も簡単な方法は、次のように、データ ファイルの先頭にコードを追加することです。

# add this
from someModule import Item
itemList = []

# leave the rest of your data below
itemList.append(Item( 'SSCATALOG',  1,  "M" ,18 ,2))
itemList.append(Item( 'PTPC36200',  1,  "Z" ,19 ,8))
# etc.

someModuleItem クラスが定義されている Python モジュールを次に示します。これらの変更を行うと、データ ファイルを通常の Python モジュールとしてインポートし、そのitemList変数にアクセスしてデータを取得できます。

ただし、より良い長期的な解決策は、より良いデータ形式を使用することです。次のようにデータを保存しないでください。

itemList.append(Item( 'SSCATALOG',  1,  "M" ,18 ,2))

次のように保存します。

'SSCATALOG',1,"M" ,18,2

その後、実際の CSV ファイルになります。モジュールを使用しcsvデータをインポートし、読み込んだデータからオブジェクト作成できます。多くの場合、ユーザー定義クラスのオブジェクトを保存しようとしない方がよいでしょう。代わりに、そのオブジェクトの作成に使用するデータを保存し、データを読み込むときにオブジェクトを再作成します。Python オブジェクトをファイルに読み書きするためpickleモジュールを見ることもできます。

于 2012-09-19T18:25:00.773 に答える
-1

この質問に関連する実際の CSV ファイルはないようです。

コード

 itemList.append(Item( 'SSCATALOG',  1,  "M" ,18 ,2))

には、値とコンマの両方があり、コンマが値の間にあるにもかかわらず、コンマ区切りの値が含まれていません。代わりに、各行は Item オブジェクト ( ) を作成し、それを( )Item( 'SSCATALOG', 1, "M" ,18 ,2)というリスト オブジェクトに追加しています。itemListitemList.append(. . .)

そのコードは、「呼び出す」前に次の 2 つのことを行うと、リスト オブジェクトの作成を実行します。

  • まず、というリスト オブジェクトを作成する必要があります。itemList
  • Itemコードがクラスの定義にアクセスできることを確認する必要があります。

Itemというファイルで指定され、すべての追加ステートメントを含む「csv」ファイルが pseudo_csv.py であると仮定するとitem.py、これを実行できるはずです。

 import item
 itemList = []
 execfile('pseudo_csv.py')
于 2012-09-19T18:18:51.793 に答える