从CSV导入坐标 - Python

时间:2013-12-18 16:00:44

标签: python csv tuples

我是python的新手,我正在尝试将一组x,y坐标从csv导入到python中。

目前我的脚本如下所示:

with open ('filename.csv') as csvfile:
    data = list(tuple(rec) for rec in csv.reader(csvfile, delimiter= ","))

这为我提供了以下(打印时)的坐标列表:

[('1', '2'), ('5', '6'), ('4', '4'), ('8', '9')]

但是我需要输出如下所示,以便它可以成功传递到多边形测试中的一个点。

[(1, 2), (5, 6), (4, 4), (8, 9)]

有人可以推荐我如何更改我的脚本以实现上述结果吗?

3 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点,但我认为这是最短的(当使用csv模块时,仅使用open它可能会更短):

with open('filename.csv') as csvfile:
    data = [(int(x), int(y)) for x, y in csv.reader(csvfile, delimiter= ',')]

答案 1 :(得分:2)

import csv

with open('coords.csv', 'rb') as csvfile:
    data = [tuple(map(int, row)) for row in csv.reader(csvfile)]

print data

你也可以使用生成器函数逐步进行,避免创建一个巨大的列表(除非这是你的目标):

def get_data(filename):
    with open(filename, 'rb') as csvfile:
        for x, y in csv.reader(csvfile):
            yield int(x), int(y)

print list(get_data('coords.csv'))

无论哪种方式,这都是输出:

[(1, 2), (5, 6), (4, 4), (8, 9)]

答案 2 :(得分:1)

试试这个:

[(int(x), int(y)) for x, y in l]