スプレッドシートの「1」の値を「0」に置き換えようとしています。ワークフロー上の理由から、データを csv Dictreader オブジェクトとして読み取りたいと思います。しかし、私はこのデータ型に混乱しており、コードをうまく機能させることができます。入力は次のとおりです。
>>> print inreader
[{'PERSON1': '1', 'PERSON2': '1', 'GENE': 'TEST1', 'PERSON4': '1', 'PERSON3': '1'}, {'PERSON1': '1', 'PERSON2': '0', 'GENE': 'TEST2', 'PERSON4': '0', 'PERSON3': '0'}, {'PERSON1': '1', 'PERSON2': '0', 'GENE': 'TEST3', 'PERSON4': '0', 'PERSON3': '1'}, {'PERSON1': '0', 'PERSON2': '0', 'GENE': 'TEST4', 'PERSON4': '0', 'PERSON3': '0'}, {'PERSON1': '-', 'PERSON2': '0', 'GENE': 'TEST5', 'PERSON4': '-', 'PERSON3': '0'}, {'PERSON1': '2', 'PERSON2': '1', 'GENE': 'TEST9', 'PERSON4': '2', 'PERSON3': '1'}]
次のコードは値だけを適切に更新しますが、これらの規則に従って Dictreader オブジェクト全体を更新する方法がわかりません。
>>>for line in inreader:
>>> newline = [v.replace('1', '0') for k,v in line.items() ]
>>> print newline
['0', '0', 'TEST0', '0', '0']
['0', '0', 'TEST2', '0', '0']
['0', '0', 'TEST3', '0', '0']
['0', '0', 'TEST4', '0', '0']
['-', '0', 'TEST5', '-', '0']
['2', '0', 'TEST9', '2', '0']
上記の値を元の値に置き換えて、新しい「inreader」オブジェクトを作成するのが理想的です。