3: 2016-12-04 (日) 08:14:36 njf  |
現: 2016-12-29 (木) 12:46:46 njf  |
| | 仕事などのデータをExcelやGoogleスプレッドシートなどでいただくことが多くあります。数百行ぐらいならそのまま使えますが、数千行とかになるとなかなか管理が難しくなってきます。 | | 仕事などのデータをExcelやGoogleスプレッドシートなどでいただくことが多くあります。数百行ぐらいならそのまま使えますが、数千行とかになるとなかなか管理が難しくなってきます。 |
| | | | |
| - | 毎回マクロなどで対応するのも大変なので、CSVに書き出ししてPythonでsqliteなどのデータベースに入れて管理すしたりしています。するとSQLが使えるので、集計などが自動化でき、かつ高速です。 | + | 毎回マクロなどで対応するのも大変なので、CSVに書き出ししてPythonでsqliteなどのデータベースに入れて管理したりしています。するとSQLが使えるので、集計などが自動化でき、かつ高速です。 |
| | | | |
| | 特にGoogleスプレッドシートの場合は、権限によってはCSVでダウンロードするところからPythonで処理することも可能なので、表示の重い画面を開かずに更新の有無などをチェックできて、管理するのがとても楽になります。 | | 特にGoogleスプレッドシートの場合は、権限によってはCSVでダウンロードするところからPythonで処理することも可能なので、表示の重い画面を開かずに更新の有無などをチェックできて、管理するのがとても楽になります。 |
| | | | |
| - | 以下で簡単にPython2.7でのCSV処理についてまとめます。 | + | 以下でそんな時に必要となるPython2.7でのCSV処理について簡単にまとめます。 |
| | | | |
| | *CSVファイルの読み込み [#rf8c79ef] | | *CSVファイルの読み込み [#rf8c79ef] |
| | | | |
| - | まず以下のテストファイルを「test.csv」とう名前で用意したとします。 | + | まず以下のテストファイルを「test.csv」という名前で用意したとします。 |
| | | | |
| | ID,name,comment | | ID,name,comment |
| | | | |
| | import csv | | import csv |
| | + | |
| | f = open("test.csv") | | f = open("test.csv") |
| | + | |
| | csvData = csv.reader(f) | | csvData = csv.reader(f) |
| | + | |
| | for row in csvData: | | for row in csvData: |
| | print row[0],row[1],row[2] | | print row[0],row[1],row[2] |
| | + | |
| | f.close() | | f.close() |
| | | | |
| | | | |
| | import csv | | import csv |
| | + | |
| | with open('test.csv', 'rb') as f: | | with open('test.csv', 'rb') as f: |
| | reader = csv.reader(f) | | reader = csv.reader(f) |
| | f = codecs.open("test.csv", 'r', 'utf_8') | | f = codecs.open("test.csv", 'r', 'utf_8') |
| | csvData = csv.reader(f) | | csvData = csv.reader(f) |
| | + | |
| | for low in csvData: | | for low in csvData: |
| | print low[0],type(low[1]),low[2] | | print low[0],type(low[1]),low[2] |
| | + | |
| | f.close() | | f.close() |
| | | | |
| | inFile = open("test.csv", 'r') | | inFile = open("test.csv", 'r') |
| | outFile = open('test_out.csv', 'w') | | outFile = open('test_out.csv', 'w') |
| | + | |
| | csvData = csv.reader(inFile) | | csvData = csv.reader(inFile) |
| | + | |
| | writer = csv.writer(outFile) | | writer = csv.writer(outFile) |
| | + | |
| | for row in csvData: | | for row in csvData: |
| | writer.writerow(row) | | writer.writerow(row) |
| | + | |
| | inFile.close() | | inFile.close() |
| | outFile.close() | | outFile.close() |
| | | | |
| | inFile = open("test.csv", 'r') | | inFile = open("test.csv", 'r') |
| | + | |
| | outFile = open('test_out.csv', 'w') | | outFile = open('test_out.csv', 'w') |
| | + | |
| | csvData = csv.reader(inFile) | | csvData = csv.reader(inFile) |
| | + | |
| | writer = csv.writer(outFile) | | writer = csv.writer(outFile) |
| | writer.writerows(csvData) | | writer.writerows(csvData) |
| | + | |
| | inFile.close() | | inFile.close() |
| | outFile.close() | | outFile.close() |