在将值存储到列表时遇到csv.DictReader()问题

xmq68pz9  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(87)

我正在尝试使用csv.DictReader()读取一个csv文件,并将数据以字典的形式存储到一个列表中。但问题是dict没有正确生成。

with open(report_object_items_filepath, 'r',encoding='utf-8') as csvf:
        #load csv file data using csv library's dictionary reader
        csvReader = csv.DictReader(csvf)

        #convert each csv row into python dict
        for row in csvReader:
            #adding (row):python dict to json array
            jsonArray.append(row)

我得到的输出-

{'FILE_ID;DASHBOARD_TITLE;OBJECT_TITLE;OBJECT_TYPE;LISTEN_TO_FILTER;ITEM_NAME;COLUMN_ORDER;OBJECT_ROW;OBJECT_COLUMN;OBJECT_WIDTH;OBJECT_HEIGHT;DATA_ITEM_FEATURES;SORT_ITEM_YN;REFERENCE_TREND_LINE;ITEM_CONDITION;AGGREGATION;DIMENSION_GROUP': 'TDSfile3;Dashboard 1;Sheet 1;;Gender;AdventureWorks_Customers.AnnualIncome;1;50000;30778;52422;24500;measure;;;;Sum;'}

在输出中,它应该包含字典键单独和相同的值。但相反,它的形式单一字符串。
正确的结果应该是键是各自的值。作为-

{'FILE_ID': 'TDSfile3', 'DASHBOARD_TITLE': 'Dashboard 1', 'OBJECT_TITLE': 'Sheet 1', 'OBJECT_TYPE': '', 'LISTEN_TO_FILTER': 'Gender', 'ITEM_NAME': 'AdventureWorks_Customers.AnnualIncome', 'COLUMN_ORDER': '1.0', 'OBJECT_ROW': '50000', 'OBJECT_COLUMN': '30778', 'OBJECT_WIDTH': '52422', 'OBJECT_HEIGHT': '24500', 'DATA_ITEM_FEATURES': 'measure', 'SORT_ITEM_YN': '', 'REFERENCE_TREND_LINE': '', 'ITEM_CONDITION': '', 'AGGREGATION': 'Sum', 'DIMENSION_GROUP': ''}
zzlelutf

zzlelutf1#

这似乎是你的文件在不是真正的“逗号分隔”,但分号分隔。使用csv.DictReader(csvf, delimiter=';')

from pprint import pp
import csv

csv_file = """\
FILE_ID;DASHBOARD_TITLE;OBJECT_TITLE;OBJECT_TYPE;LISTEN_TO_FILTER;ITEM_NAME;COLUMN_ORDER;OBJECT_ROW;OBJECT_COLUMN;OBJECT_WIDTH;OBJECT_HEIGHT;DATA_ITEM_FEATURES;SORT_ITEM_YN;REFERENCE_TREND_LINE;ITEM_CONDITION;AGGREGATION;DIMENSION_GROUP
TDSfile3;Dashboard 1;Sheet 1;;Gender;AdventureWorks_Customers.AnnualIncome;1;50000;30778;52422;24500;measure;;;;Sum;"""

data = list(csv.DictReader(csv_file.splitlines(), delimiter=';'))
pp(data)

产出:

[{'FILE_ID': 'TDSfile3',
  'DASHBOARD_TITLE': 'Dashboard 1',
  'OBJECT_TITLE': 'Sheet 1',
  'OBJECT_TYPE': '',
  'LISTEN_TO_FILTER': 'Gender',
  'ITEM_NAME': 'AdventureWorks_Customers.AnnualIncome',
  'COLUMN_ORDER': '1',
  'OBJECT_ROW': '50000',
  'OBJECT_COLUMN': '30778',
  'OBJECT_WIDTH': '52422',
  'OBJECT_HEIGHT': '24500',
  'DATA_ITEM_FEATURES': 'measure',
  'SORT_ITEM_YN': '',
  'REFERENCE_TREND_LINE': '',
  'ITEM_CONDITION': '',
  'AGGREGATION': 'Sum',
  'DIMENSION_GROUP': ''}]

相关问题