从CSV文件中提取数据作为python dict

6yt4nkrj  于 2022-12-15  发布在  Python
关注(0)|答案(3)|浏览(143)

我如何提取数据是这个CSV作为一个python字典而不导入包?数据示例:
用户识别号;“ISBN”;“图书评级”276725;“034545104X”;“0”276726;“0155061224”;“五”二七六七二七;“零四四六五二零八零二”;“0”276729;“052165615X”;“三”

def loadRatings():
  # Get bookratings
    try:
        bookR = {}
        for line in open('booktext.csv'):
            (id,title) = line.split(';')[0:2]
            bookR[id] = title
        return bookR
    except IOError as ioerr:
        print('File error: ' + str(ioerr))
        
print(loadRatings())
but i need my result to be like

bookR = {User-ID: 276725, ISBN: 034545104X, Rating: 0}
dxpyg8gm

dxpyg8gm1#

此代码将返回

with open("booktext.csv") as f:
    for i, line in enumerate(f):
        # skip header
        if i == 0:
            continue
        row_lst = line.replace("\n","").replace('"','').split(";")
        if len(row_lst) == 3:
            bookR = {
                "User-ID": row_lst[0],
                "ISBN": row_lst[1],
                "Rating": row_lst[2]
            }
            print(bookR)

{“用户ID”:“276725”,“国际标准书号”:“034545104 X”,“评级”:“0”}
{“用户ID”:“276726”,“国际标准书号”:“0155061224”,“评级”:'五'}
{“用户ID”:“276727”,“国际标准书号”:“0446520802”,“评级”:“0”}
{“用户ID”:“276729”,“国际标准书号”:“052165615 X”,“评级”:'三'}
在处理文件时,你应该总是使用上下文管理器with,除非你真的知道并且有很好的理由不这样做。

dy2hfwbg

dy2hfwbg2#

描述是模糊的条款,你正在寻找,不清楚它应该是所有项目的一个单一的法令,或只是一个单独的行。如果你需要一个普通的dict,你可以使用这个简单的方法,只是一些格式稍后取决于你所需要的数据类型。我设法重新创建结果如下:

with open('ex.csv',newline="") as f:
    d = list(f.read().split(' '))
    keys = d[0].split(';')
    values = d[1:]
    book = {}
    for idx, key in enumerate(keys):
        book[key] = []
        for i in range(len(values)):
            book[key].append(values[i].split(';')[idx])

其产生的结果是:

{'User-ID': ['276725', '276726', '276727', '276729'],
'"ISBN"': ['"034545104X"', '"0155061224"', '"0446520802"', '"052165615X"'],
'"Book-Rating"': ['"0"', '"5"', '"0"', '"3"']}
u91tlkcl

u91tlkcl3#

import csv

filename ="Geeks.csv"

# opening the file using "with"
# statement
with open(filename, 'r') as data:
    for line in csv.DictReader(data):
        print(line)

相关问题