>

csv.DictReader() 를 사용하려고하는 동안  CSV파일을 다음과 같은 사전으로 전송하려면 :

csv_file = open(input_file, "r")
data = csv.DictReader(csv_file)

그러나 pyzwyz에 사전 방법을 적용 할 수 없습니다 .

따라서 data 형식을 인쇄합니다 .

data

그리고 유형을 찾으십시오 :

print(type(data))

<class 'csv.DictReader'> 도 마찬가지입니다  실제로 사전 객체를 반환합니까?CSV에서 사전 개체를 얻으려면 어떻게해야하나요?

CSV파일은 다음과 같습니다.

csv.DictReader()

실제로 예상되는 출력이 없습니다. 추가 계산을 위해이 값을 저장하고 싶습니다.

편집 (댓글 별) :출력은 두 부분으로 구성 될 수 있습니다. 첫 번째는 [['play', 'weather', 'temperature'], ['yes', 'sunny', '77'], ['no', 'rainny', '60'], ['yes', 'windy', '70'],...] 와 같은 csv 파일의 헤더입니다.  . 두 번째는 다음과 같습니다. ['play', 'weather', 'temperature']

[['yes', 'sunny', '77'], ['no', 'rainny', '60'], ['yes', 'windy', '70']...]
  • 답변 # 1

    csv.reader

    원하는 결과를 얻으면 dict 를 사용할 필요가 없습니다  또는 결과적으로 csv.DictReader . 대신 csv.reader 를 사용하십시오. 반복자를 반환합니다. 그런 다음 next 를 사용하십시오.  그리고 list  헤더와 데이터를 각각 추출하는 방법 :

    from io import StringIO
    import csv
    x = StringIO("""play,weather,temperature
    yes,sunny,77
    no,rainy,60
    yes,windy,70""")
    # replace x with open('file.csv', 'r')
    with x as fin:
        reader = csv.reader(fin)
        headers = next(reader)  # get headers from first row
        data = list(reader)     # exhaust iterator from second row onwards
    
    

    결과는 헤더 목록과 데이터 목록 목록입니다 :

    print(headers)
    ['play', 'weather', 'temperature']
    print(data)
    [['yes', 'sunny', '77'],
     ['no', 'rainy', '60'],
     ['yes', 'windy', '70']]
    
    

    팬더

    타사 라이브러리를 기꺼이 사용하려는 경우 Pandas는 유형 변환 및 색인 생성을보다 편리하게 처리 할 수있는 더 나은 옵션이 될 수 있습니다.

    import pandas as pd
    df = pd.read_csv('file.csv')
    
    

    결과는 pd.DataFrame 입니다  개체 :

    print(df)
      play weather  temperature
    0  yes   sunny           77
    1   no   rainy           60
    2  yes   windy           70
    print(type(df))
    <class 'pandas.core.frame.DataFrame'>
    
    

  • 답변 # 2

    DictReader  파일과 같은 객체를 반환합니다. 여전히 한 번에 한 행씩 csv 파일에서 데이터를 읽지 만 반환 된 행은 목록 대신 사전으로 정렬됩니다.

    파일이 다음과 같은 경우 :

    play,weather,temperature
    yes,sunny,77
    no,rainny,60
    yes,windy,70
    
    

    그런 다음 DictReader 를 사용할 수 있습니다  다음과 같은 방법으로 :

    with open('path/to/file.csv') as fp:
        header = fp.readline().strip().split(',')
        dreader = DictReader(fp, header)
        data = list(dreader)
    
    

    이 경우 data   OrderedDict 의 목록이 될 것입니다  헤더에서 행의 각 항목으로 매핑되는 객체.

    data
    #returns:
    [OrderedDict([('play', 'yes'), ('weather', 'sunny'), ('temperature', '77')]),
     OrderedDict([('play', 'no'), ('weather', 'rainny'), ('temperature', '60')]),
     OrderedDict([('play', 'yes'), ('weather', 'windy'), ('temperature', '70')])]
    
    

관련 자료

  • 이전 sql server - 상위 3 개 범주에서 상위 3 개 항목 선택
  • 다음 java - Google Maps API에서 확대/축소 수준을 기준으로 상점 표시