2013-12-18 2 views
3

저는 파이썬에 익숙하지 않고 CSV에서 파이썬으로 x, y 좌표 집합을 가져 오려고합니다.CSV - Python에서 좌표 가져 오기

, 현재 나의 스크립트는 다음과 같습니다 : 내가 출력을 필요로하지만

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

그래서 아래와 같이 보는 :

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)] 

위의 결과를 얻기 위해 내 스크립트를 변경하는 방법을 누군가에게 추천 할 수 있습니까? (혼자 단지 open과 함께 CSV 모듈을 사용하는 경우가 짧아 질 수 있음)을 할

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

N.B이 : 그것은'해야한다 개방 ('filename.csv', 'RB') '; 파이썬 3,'open ('filename.csv', 'r', newline = '')'. – DSM

+0

또한'csv.reader()'호출의'delimiter = ","'는 필요하지 않습니다. CSV (Comma-separated values) (http : // en. wikipedia.org/wiki/Comma-separated_values)). – martineau

답변

2

많은 방법이 있지만, 나는이 짧은 생각 :

+1

대단한데, 나는 끝에 대괄호를 추가하고 중복 된 'in'을 삭제하고 작업을 수행했습니다! – user3115802

+0

Oopsie ... 내가 그것을 썼을 때 나는 분명히 관심을 기울이지 않았다. 다행 당신을 위해 일한 :) – Wolph

1

이 시도

with open('filename.csv') as csvfile: 
    data = [(int(x), int(y)) for x, y in csv.reader(csvfile, delimiter= ',')] 
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')) 

어느 쪽이든,이 출력 될 것입니다 : 파이썬 2를 사용하는 경우

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