我是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)]
有人可以推荐我如何更改我的脚本以实现上述结果吗?
答案 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]