2012-07-16 3 views
0

각 주식 (파일)의 계산 된 데이터를 별도로 순환하여 계산 된 값이 특정 숫자 (이 경우 731)보다 큰지 확인하기 위해 CSV 파일에서 숫자 데이터를로드하려고합니다.). 그러나, 내가 사용하고있는 방법은 파이썬이 목록을 반복 할뿐만 아니라 숫자 ('500') 주위에 따옴표를 추가하는 것으로 보인다. 불행히도, 나는 마지막 "if"문이 이것을 처리 할 수 ​​없다고 생각하며 결과적으로 적절하게 기능하지 않는 것으로 보입니다. 무슨 일이 일어나고 있는지, 그리고이 코드를 제대로 실행하려면 파이썬이 왜해야하는지 잘 모르겠습니다.파이썬 반복 CSV 파일

import csv 
    stocks = ['JPM','PG','GOOG','KO'] 
    for stock in stocks: 
     Data = open("%sMin.csv" % (stock), 'r') 
     stockdata = [] 
     for row in Data: 
      stockdata.extend(map(float, row.strip().split(','))) 
      stockdata.append(row.strip().split(',')[0]) 
     if any(x > 731 for x in stockdata): 
      print "%s Minimum" % (stock) 
+2

왜 csv.reader 클래스가 아닌 csv 라이브러리를 가져 오나요? – DaveP

+1

''stock :'stock''는 str이 될 것이므로'.extend()'메소드를 갖지 않을 것임을 의미합니다. 이 코드는 실행중인 코드가 될 수 없습니다. –

+1

Google 시스템에서 실행할 수 있고 문제를 생성 할 수있는 코드를 입력하십시오. 그런 다음에야 문제를 해결할 수 있습니다. 위의 주석에서 언급했듯이'stock'는 string이며'.extend()'메소드가 없습니다. – Nilesh

답변

1

현재 각 행의 모든 ​​열을 목록에 추가 한 다음 그 행의 첫 번째 열을 다시 추가 하시겠습니까? 그렇다면 모든 컬럼이 중요합니까?

또한 비교하기 전에 파일에서 모든 데이터를로드하고 있지만, 어디를 사용하는 것으로 표시되지 않습니다, 그래서 당신 앞에서 바로 가기 수있는 것 같아요 ...

만약 내가 제대로 이해하고, 코드를해야 이 (또는 첫 번째 열만 비교하도록 수정하십시오).

기본적으로이 글을 작성 하시겠습니까?

import csv 

STOCKS = ['JPM', 'PG', 'GOOG', 'KO'] 

for stock in STOCKS: 
    with open('{}Min.csv'.format(stock)) as csvin: 
     for row in csv.reader(csvin): 
      if any(col > 731 for col in map(float, row)): 
       print '{} minimum'.format(stock) 
       break 
+0

그것은 정확하게 그것 일 것입니다. 정말 고마워. 내 파이썬은 최소한의 말만하면 연습이 필요하다. – user1526586