私は、1行に8-12の値を持つcsvファイルを持っています。これは、カテゴリ、支払い方法、日付、金額などでデータを費やしています。ファイルをPythonにインポートしてリストに入れたいのですが、たとえば、ある月の特定のカテゴリにどれくらい費やされたかなどを簡単に見つけることができます。私が望むすべての属性を持った単一の購入のためのオブジェクトを作成し、次にこれらのオブジェクトのリストにcsvからインポートを行うための良い方法がありますか?CSVを各行をオブジェクトとしてインポートするにはどうすればよいですか?
0
A
答えて
0
Pythonは独自のCSVリーダーをthe csv moduleに持っています。 あなたのCSVファイルを読み込むと、このようなオブジェクトにラインを変換するためにそれを使用することができます:
import csv
# Read values from csv file.
values = []
with open('file.csv', 'r') as csv_file:
# Replace the delimiter with the one used in your CSV file.
csv_reader = csv.reader(csv_file, delimiter=',')
for row_values in csv_reader:
# If a line in your CSV file looks like this: a,b,c
# Then row_values looks something like this: ['a', 'b', 'c']
values.append(row_values)
# Convert the list of lists (which represent the CSV values) to objects.
column_names = ['first_column', 'second_column', 'third_column']
objects = []
for row_values in values:
objects.append({key: value for key, value in zip(column_names, row_values)})
# objects is now a list of dicts with one dict per line of the CSV file.
# The dicts could e.g. be converted to objects with this:
class MyObject:
def __init__(self, first_column, second_column, third_column):
self.first_column = first_column
self.second_column = second_column
self.third_column = third_column
print(objects)
objects = [MyObject(**object) for object in objects]
# Alternative:
alternative_objects = []
for object in objects:
new_object = object()
new_object.__dict__ = object
alternative_objects.append(new_object)
CSVモジュールの詳細についてはPython 2.7または3.xドキュメントを参照してください。
0
オブジェクトでできるトリッキー/ハックリの1つは、dictでプログラムで作成することです。次に例を示します。
In [1]: vals = {"one":1, "two":2}
In [2]: class Csv():pass
In [3]: c = Csv()
In [4]: c.__dict__ = vals
In [5]: c.one
Out[5]: 1
だから、そう、あなたが設定した属性を持つオブジェクトのようにそれを使用できるように、空のオブジェクトに挿入し、その後、辞書を作成し、空のオブジェクトを作成することができます。
関連する問題
- 1. ''と ''を使用してCSVファイルをSQL Serverにインポートするにはどうすればよいですか?
- 2. 「Galaxy」を使用してCSVファイルからアイテムをインポートするにはどうすればよいですか?
- 3. 複数のCSVファイルをインポートしてマスターテーブルを作成するにはどうすればよいですか?
- 4. CSVファイルに基づいて複数のメールボックスをインポートするにはどうすればよいですか?
- 5. テキストエリアの各行をオートコンプリートするにはどうすればよいですか?
- 6. PowerShellを使用してCSVをSQL Serverにインポートしようとすると、CSV列のタイトルとNULL行をどのように考慮するのですか
- 7. 認識できないdatetime形式のCSVをインポートするにはどうすればよいですか?
- 8. カラム名にスペースがある場合、CSVをMySQLにインポートするにはどうすればよいですか?
- 9. SASの.csvファイルから「日付」を正確にインポートするにはどうすればよいですか?
- 10. CSVファイルのすべての行でワードカウントを行うにはどうすればよいですか?
- 11. ExcelがCSV値を1つの大きな数値としてインポートしないようにするにはどうすればよいですか?
- 12. Text :: CSVを使用してCSVに書き出すときに、改行で行を区切るにはどうすればよいですか?
- 13. インポート中にpg_dumpデータに対してフィルタを実行するにはどうすればよいですか?
- 14. RubyでCSVを読むときにヘッダー行をスキップするにはどうすればよいですか?
- 15. CSVファイルからNeo4jのディレクトリ/ファイル構造をインポートするにはどうすればよいですか?
- 16. データテーブルの各行に対してコンバータプロパティを設定するにはどうすればよいですか?
- 17. rddの各行に対してハッシュを生成するにはどうすればよいですか? (PYSPARK)
- 18. GAE - CSVファイルをCloud SQLにインポートするにはどうすればよいですか?
- 19. アプリケーションの各ファイルから特定のインポートを削除するにはどうすればよいですか?
- 20. 各スレッドが実行されているプロセッサを見つけるにはどうすればよいですか?
- 21. シェルスクリプトの行に基づいてCSVファイルを作成するにはどうすればよいですか?
- 22. UITableViewの各行にユーザーを新しいページに誘導するにはどうすればよいですか?
- 23. AngularJSとBootstrapを使用してngTagsInputをプロジェクトにインポートするにはどうすればよいですか?
- 24. csvファイルを結合し、ヘッダー行をPythonで追加するにはどうすればよいですか?
- 25. CSVファイルとXSDファイルを使用してXMLを作成するにはどうすればよいですか?
- 26. HP Exstreamで出力をcsvファイルとして作成するにはどうすればよいですか?
- 27. 各リクエストでプラグインをリロードするにはどうすればよいですか?
- 28. 行間と各イメージボタンの間にスペースを追加するにはどうすればよいですか?
- 29. CNTKからテンソルフローモデルをインポートするにはどうすればよいですか?
- 30. DataContractJsonSerializerをオブジェクトとして文字列としてシリアル化するにはどうすればよいですか?
これを確認してください。http://stackoverflow.com/questions/1305532/convert-python-dict-to-object –
あなたは各行をdict()として考えましたか? –
@MartinBeckett私はdict()をやってみることを考えましたが、私は、各エントリの単一の変数を調べることをデフォルトにしておくと思いましたが、そうではありませんか? –