csvの読み込み

まず CSV を読み込んで入力データを整形する部分を作ります。プログラムは Python を使います。


Python には CSV を扱うモジュールがあるのでこれを利用しようと思いますが、
初めてなので動作をみてみます。


まずはプログラムの流れを確認します。使用するデータはスプレッドシートから
string_table.csv という名前で出力した CSV ファイルです。

#coding:shift-jis
# csv ファイルを開く
csvfile=open("string_table.csv")
# if ファイルが開けたら
if csvfile!=None:
  # for csvリーダーの提供する各行について
  for row in csv.reader(csvfile):
    # 表示する
    print row
  # end for
# end if

このスクリプトみんなのPythonのサンプルほぼそのままですが

['\x83\x89\x83x\x83\x8b', '\x93\xfa\x96{\x8c\xea', '\x89p\x8c\xea']
['STR_HELLO', '\x82\xb1\x82\xf1\x82\xc9\x82\xbf\x82\xcd\x81B', 'Hello.']
['STR_BYE', '\x82\xb3\x82\xe6\x82\xa4\x82\xc8\x82\xe7\x81B', 'Good bye.']

なにやら文字化けしてしまいました。 Python で日本語を使うときはユニコードだと
トラブルが少なくて良いようです。とりあえずスクリプトを以下のように修正してみます。

import csv
csvfile=open("string_table.csv");
if csvfile != None:
  for row in csv.reader(csvfile):
    for col in row:
      print col
ラベル
日本語
英語
STR_HELLO
こんにちは。
Hello.
STR_BYE
さようなら。
Good bye.

リストから各列を取り出してやるときちんと表示されました。


CSV からの読み込みは出来たので次は以下の擬似コードに沿って入力データを作成する関数を定義します。

# 1. csv からラベルと文字列データの組を作成し、入力データとする 
# file : 入力ファイル
# lang : 採用する言語
# return 成功したら (label, string) のタプルのリスト. 失敗したら None.
def input_from_csv(file,lang="日本語"):
  # csv ファイルを開く
  # if 失敗したら
    # None を返す
  # endif
  # 行のリストを作成する
  # 1行目を取り出す
  # lang に対応する列を決める
  # if 決まらなかったら
    # None を返す
  # endif
  # 最終的なリストを作成する
  # リストを返す

大雑把ですがこんな感じで進めます。