使用csv文件从元组到整数

时间:2012-02-21 05:59:30

标签: python csv tuples

我在使用csv.reader时遇到了一些问题。

我有两个文件:

FileA对应于9个地理坐标(x(column1)和y(column2),没有标题)。该文件从excel保存到csv文件中。

301506  5918202
301012  5919417
309769  5919926
299337  5924043
299602  5924730
305310  5907794
300634  5927108
303968  5922319
303684  5922062
304882  5922009

FileB,它是0到8之间9个整数的随机序列。该文件从excel保存为csv文件。数据在第1行。

6     3     7     8     5     1     2     4     0

这是代码:

import csv

FileA = csv.reader(open(‘FileA.csv’,'rb'),delimeter=',')
coord_list = []
coord_list.extend(FileA)
coordinates = []
for data in coord_list:
     coordinates.append(data[0])
print coordinates

FileB = csv.reader(open(‘FileB.csv’,'rb'),delimeter=',')
seq_list = []
seq_list.extend(FileB)
sequence = []
for data in seq_list:
    sequence.append(data[0])
print sequence


FileC = []

for i range(0,8,1):
         FileC[sequence[i], 1] = coordinates[i,1]
         FileC[sequence[i], 2] = coordinates[i,2]

print FileC

但我明白了:

File "C:\generatesequence\script.py", line 19, in <module>
    FileC[sequence[i], 1] = coordinates[i,1]
TypeError: list indices must be integers, not tuple

我想构建FileC,以便能够在ArcMAP中使用它

欢迎任何建议:)

4 个答案:

答案 0 :(得分:2)

带有元组a[b, c]

a个索引(b, c)。你需要认真考虑你想要在你执行此操作的特定行中做什么。

答案 1 :(得分:1)

您尝试使用元组访问列表。请尝试file[sequence[i]: 1] = coordinates[i:1]

答案 2 :(得分:1)

例如

test.csv:     'a,b,c,d,f,g'

In [2]: import csv
In [3]: spamReader = csv.reader(open('test.csv', 'rb'), delimiter=',', quotechar='|')
In [4]: spamReader 
Out[4]: <_csv.reader object at 0x1e34ec0>
In [5]: spamReader.next()
Out[5]: ['a', 'b', 'c', 'd', 'f', 'g']

csv.reader返回一个对象是一个迭代器,而不是一个元组或列表。因此FileA应该是一个迭代器(你不能直接将它转换为列表)

答案 3 :(得分:1)

您正在错误地访问列表:您无法使用逗号访问二维列表,就像在R或MATLAB中一样。请仔细查看Python lists 非常

根据您的代码,我认为这应该可以实现您的目标:

import csv

FileA = csv.reader(open(‘C:/testing/FileA.csv’,'rb'),delimeter',')
FileB = csv.reader(open(‘C:/testing/FileB.csv’,'rb'),delimeter',')
FileC = [0] * 10

for lineA, lineB in zip(FileA, FileB):
    FileC[int(lineB[0])] = lineA

print FileC