2: 2016-12-04 (日) 06:55:19 njf[6] [7] [8] | 3: 2016-12-04 (日) 08:14:36 njf[6] [9] [10] | ||
---|---|---|---|
Line 3: | Line 3: | ||
仕事などのデータをExcelやGoogleスプレッドシートなどでいただくことが多くあります。数百行ぐらいならそのまま使えますが、数千行とかになるとなかなか管理が難しくなってきます。 | 仕事などのデータをExcelやGoogleスプレッドシートなどでいただくことが多くあります。数百行ぐらいならそのまま使えますが、数千行とかになるとなかなか管理が難しくなってきます。 | ||
- | 毎回マクロなどで対応するのも大変なので、CSVに書き出ししてPythonでsqliteなどのデータベースに入れて管理することが多くあります。するとSQLが使えるので、集計などが自動化でき、かつ高速です。 | + | 毎回マクロなどで対応するのも大変なので、CSVに書き出ししてPythonでsqliteなどのデータベースに入れて管理すしたりしています。するとSQLが使えるので、集計などが自動化でき、かつ高速です。 |
特にGoogleスプレッドシートの場合は、権限によってはCSVでダウンロードするところからPythonで処理することも可能なので、表示の重い画面を開かずに更新の有無などをチェックできて、管理するのがとても楽になります。 | 特にGoogleスプレッドシートの場合は、権限によってはCSVでダウンロードするところからPythonで処理することも可能なので、表示の重い画面を開かずに更新の有無などをチェックできて、管理するのがとても楽になります。 | ||
Line 103: | Line 103: | ||
*CSVファイルの書き込み [#xda09f1c] | *CSVファイルの書き込み [#xda09f1c] | ||
- | CSVファイルの書き込みの簡単な例として、さきほどのtest.csvをtest_out.csvというファイルに書き込むのをあげると、以下のようになります。 | + | CSVファイルの書き込みの簡単な例として、さきほどのtest.csvをtest_out.csvというファイルに書き込む方法をあげます。そのコードは以下のようになります。 |
inFile = open("test.csv", 'r') | inFile = open("test.csv", 'r') | ||
Line 131: | Line 131: | ||
inFile.close() | inFile.close() | ||
outFile.close() | outFile.close() | ||
+ | |||
+ | UTF-8で試してみると予想通りエラーが出ます。 | ||
+ | |||
+ | for row in csvData: | ||
+ | r1utf = row[1].decode("utf_8") | ||
+ | writer.writerow((row[0],r1utf,row[2])) | ||
+ | |||
+ | 結果 | ||
+ | Traceback (most recent call last): | ||
+ | File "csvTest.py", line 16, in <module> | ||
+ | writer.writerow((row[0],r1utf,row[2])) | ||
+ | UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128) | ||
+ | |||
+ | 書き込むときはstrに変換するのを忘れないようにしましょう。 | ||
+ | |||
+ | 出力形式はやはりデフォルトではエクセルのCSV書き出しと同じようです。変更も可能ですが、こちらもほとんどの場合そのままで問題ないと思うのでここでは省略します。 |
(This host) = https://njf.jp