2017-04-09 2 views
0

データをcsvファイルで指定しました。 は、その後、私はこれらのコードにPython- csvファイルのnxnリストデータの半分を指定して対称リストを作成します。

with open('file.csv') as data: 
     reader = csv.reader(data) 
     dat = list(reader) 

を使ってPythonにファイルをインポートのIは、交換するには、次のコードを使用して " - " 0

for i in range(len(dat)): 
     for j in range (len(dat[0])): 
      if dat[i][j] == '-': 
       dat[i][j] = 0 

によってそれから私はこの

dat=[[0,"8","4","10],["",0,"5","6"],["","",0,"9"],["","","",0]] 
のようなものを得ました

どのようにdatを対称にして、すべての ""を0で置き換え、整数を ""にするか?

予想される出力:

dat=[[0,8,4,10],[8,0,5,6],[4,5,0,9],[10,6,9,0]] 

ので、ありがとうございました!!!

答えて

1

ファイルに保存する場合は、データを読み取り、csvリーダーに書き戻す必要があります。

この例では、次のようにしてください。if dat[i][j] in ('-', "")それをファイルに書き戻します。

with open('file.csv') as data: 
    reader = csv.reader(data) 
    output = [] 
    for row in reader: 
     output.append([0 if cell in ("", "-") else int(cell) for cell in row]) 
    print(output) 

DEMO:

>>> output = [] 
>>> rows = [["", "-", "8", "10"], ["1", "-", "", "100"]] 
>>> for row in rows: 
...  output.append([0 if cell in ("", "-") else int(cell) for cell in row]) 
... 
>>> print(output) 
[[0, 0, 8, 10], [1, 0, 0, 100]] 
>>> 
+0

こんにちはこれは次のようになります達成するために

もう一つの方法。期待される対称出力の作成方法を知っていますか? 期待される出力: dat = [[0,8,4,10]、[8,0,5,6]、[4,5,0,9]、 [10,6,9,0]] – user02

+0

Yup - 答えをチェックする - コードスニペットはあなたにどのように表示されます。 – karthikr

+0

ありがとうございました!!! – user02

関連する問題