0

これが私の現在のコードです

a_reader = None
a_reader     = open('data.csv', 'rU')
a_csv_reader = csv.reader(a_reader)

for row in a_csv_reader:
       print row
a_reader.close()

count = 0
sum   = 0.0
a_reader     = open('data.csv', 'rU')
a_csv_reader = csv.reader(a_reader)
a_csv_reader.next()

for row in a_csv_reader:
        if count != 0 and row[0] != '':
            sum = sum + float(row[0])
        count = count + 1

a_reader.close()
print 'Number of lines is:',count
print 'Sum is:',sum
return listStation

これにより、以下の結果が生成されます

['1', '476050', '7709929']    
['2', '473971', '7707713']    
['3', '465676', '7691097']    
['4', '515612', '7702192']    
['5', '516655', '7704405']    
['6', '519788', '7713255']    
['7', '538466', '7683341']    
Number of lines is: 8    
Sum is: 28.0

さて、私がやりたいことは、ID、Easting および Northing の値を分割し、それらをリストに追加して 1 つの 2D リストを作成することです。これを行うことは可能ですか?もしそうなら、あなたは私にコードを提供できますか?

4

5 に答える 5

2
rows = []
for row in a_csv_reader:
       rows.append(row)

で降伏しrowsます:

[['1', '476050', '7709929']    
['2', '473971', '7707713']    
['3', '465676', '7691097']    
['4', '515612', '7702192']    
['5', '516655', '7704405']    
['6', '519788', '7713255']    
['7', '538466', '7683341']]
于 2013-06-22T06:24:28.900 に答える
0

テストするファイルはありませんがdata.csv、コードを書き直して、必要な2Dリストを生成する方法は次のとおりです。

import csv

with open('test_data.csv', 'rU') as a_reader:
    a_csv_reader = csv.reader(a_reader)

    for row in a_csv_reader:
        print row

with open('test_data.csv', 'rU') as a_reader:
    a_csv_reader = csv.reader(a_reader)
    a_csv_reader.next()

    listStation = []
    count = 0
    total = 0.0
    for row in a_csv_reader:
        if count != 0 and row[0] != '':
            total += float(row[0])
        count += 1
        listStation.append(map(int, row))

print 'Number of lines is:', count
print 'Sum is:', total
print 'listStation:', listStation

出力:

['ID', 'Easting', 'Northing']
['1', '476050', '7709929']
['2', '473971', '7707713']
['3', '465676', '7691097']
['4', '515612', '7702192']
['5', '516655', '7704405']
['6', '519788', '7713255']
['7', '538466', '7683341']
Number of lines is: 7
Sum is: 27.0
listStation: [[1, 476050, 7709929], [2, 473971, 7707713], [3, 465676, 7691097], 
              [4, 515612, 7702192], [5, 516655, 7704405], [6, 519788, 7713255], 
              [7, 538466, 7683341]]

組み込み関数との競合を防ぐために、名前sumを付けた変数を変更したことに注意してください。totalsum()

于 2013-06-22T12:34:23.087 に答える
0

私はあなたのコードを DictReader とデフォルトの辞書で書くと思います:

import csv

data={}
with open('/tmp/sta.txt','r') as fin:
    reader=csv.DictReader(fin)
    for row in reader:
        for k,v in row.items():
            data.setdefault(k,[]).append(float(v))

print data
print 'Sum is:',sum(data['Station ID'])
print 'Number of lines is:',len(data['Station ID'])+1

版画:

{'Station ID': [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0], 
 'Easting': [476050.0, 473971.0, 465676.0, 515612.0, 516655.0, 519788.0, 538466.0],
 'Northing': [7709929.0, 7707713.0, 7691097.0, 7702192.0, 7704405.0, 7713255.0, 7683341.0]}
Sum is: 28.0
Number of lines is: 8
于 2013-06-23T18:27:38.603 に答える
0

これを試して:

import csv

def run():
    count = 0
    sum = 0.0
    listStation = []
    with open('data.csv', 'rU') as a_reader:
        a_csv_reader = csv.reader(a_reader)
        for row in a_csv_reader:
            if count != 0:
                if row[0] != '':
                    sum = sum + float(row[0])
                listStation.append(map(int, row))
            print 'row =', row
            count = count + 1
    print 'Number of lines is:',count
    print 'Sum is:', sum
    print listStation

if __name__ == '__main__':
    run()
于 2013-06-22T06:27:41.693 に答える
0

以下は機能する可能性があります(ただし、データによって異なります-最初の列を空白にするか、列に無効な数値が存在するなど...):

from itertools import islice
import csv

with open('data.csv') as fin:
    csvin = islice(csv.reader(fin), 1, None) # skip header
    rows = [map(int, row) for row in csvin]

print 'Rows are:'
print rows
print 'Number of lines is:', len(stuff)
print 'Sum is:', sum(row[0] for row in stuff)
于 2013-06-22T12:41:58.870 に答える