2014-12-03 6 views
0

텍스트 파일을 쉼표로 구분 된 문자열 목록으로 변환해야합니다 (공백없이 첫 줄 없음). 인쇄가 끝나면 각 상태의 이름, 각 상태가 몇 줄에 있는지, 각 상태에 대한 모든 Cen2010 값의 합계 (각 줄의 첫 번째 숫자), Est2013 값의 합계 (각 줄의 마지막 번호), 그리고 각 주마다 Cen2010 인구에서 Est2013 인구로의 총 변화.jython이 텍스트 파일을 문자열 목록으로 변환합니다.

텍스트 파일 예 :

NAME, STNAME, Cen2010, Base2010, Est2010, Est2011, Est2012, Est2013
"애 빙던 도시", 일리노이, 3319,3286,3286,3270,3242,3227
"Addieville 마을", 일리노이, 252,252,252,250,250,247
"애디슨 마을", 일리노이, 36942,36964,37007,37181,37267,37385
"델린 마을", 일리노이, 85,85,85,84,84,83

현재 코드 :

def readPopest(): 
    censusfile=pickAFile() 
    cf=open(censusfile,"rt") 
    cflines=cf.readlines() 
    for i in range(len(cflines)-1): 
    lines=cflines[i+1] 
    estimate=lines.strip().split(',') 
    print estimate 

반환 :
[ ''애 빙던 도시 '', '일리노이', '3319', '3286', '3286', '3270', '3242', '3227 ']
' '일리노이', '252', '252', '252', '250', '250', '247']
[ ' "Addison village" '일리노이', '36942', '36964', '37007', '37181', '37267', '37385']
[ ''아드 라인 마을 ''일리노이 '85'85 ' '85', '84', '84', '83']

답변

0

이 데이터를 SQL 데이터베이스로 가져올 수 있다고 생각합니다. 합계, 필터 등은 매우 쉽습니다.

그러나 파이썬에는 사전이 있습니다. 키 이름이 주 이름 인 곳에서 데이터 및 채우기 사전을 읽을 수 있습니다. 그런 다음 각 라인에 대해이 상태에있는 마을 목록에 마을을 추가하고 이미 저장된 숫자에 숫자를 추가하십시오. 물론 상태 1 마을에 대해서는 두 개의 배열로 구조를 만들어야합니다. 하나는 마을을위한 것이고 다른 하나는 숫자를위한 것입니다. 숙제가 원하는 형식으로이 사전을 인쇄하려고으로

state_dict = {} 
    cf = open(censusfile, "rt") 
    lines = cf.readlines() 
    for line in lines[1:]: # we skip 1st line 
     arr = line.strip().split(',') 
     town = arr[0] 
     state = arr[1] 
     numbers = [int(x) for x in arr[2:]] 
     add_items(state_dict, state, town, numbers) 
    print(state_dict) 

:

def add_items(main_dict, state, town, numbers): 
    try: 
     towns_arr, numbers_arr = main_dict[state] 
     towns_arr.append(town) 
     for i in range(len(numbers)): 
      numbers_arr[i] += numbers[i] 
    except KeyError: 
     town_arr = [town, ] 
     main_dict[state] = [town_arr, numbers] 

지금 당신이 파일을 읽고 기본 코드를 사용해야합니다 : 코드에서이처럼 보인다.

+0

매우 성공적이었습니다. 감사합니다. – Jake

관련 문제