簡體   English   中英

從 CSV 文件讀取時 Python 代碼中的 ValueError 錯誤

[英]ValueError error in Python code when reading from CSV file

您好,我應該按照以下步驟操作。 我已完成但收到此錯誤

文件“C:/Users/User/Desktop/question2.py”,第 37 行,在 jobtype_salary[li['job']] = int(li['salary'])

ValueError: int() 以 10 為底的無效文字:'SECRETARY a. 將文件讀入列表列表(14 行,5 列)

灣。 將列表的每一行轉換為字典。 鍵是:ename、job、salary、comm、dno。 調用字典的結果列表 dict_of_emp

c。 顯示表dict_of_emp,每行一行

d。 對 dict_of_emp 執行以下計算:

D1。 計算並打印 Richard 和 Mary 的收入(添加薪水和通訊)

D2 計算並顯示支付給每種工作類型的工資總和(即支付給分析師的工資是 3500 + 3500= 7000)

D3。 將部門 30 員工的工資加 5000。顯示新表

    import csv
    #Open the file in read mode
    f = open("employeeData.csv",'r')
    reader = csv.reader(f)
    #To read the file into list of lists we use list() method
    emps = list(reader)
    #print(emps)
    #Transform each row into a dictionary.
    dict_of_emp = [] #list of dictionaries
    for row in emps:
        d={}
        d['ename'] = row[0]
        d['job'] = row[1]
        d['salary']=row[2]
        d['comm']=row[3]
        d['dno']=row[4]
        dict_of_emp.append(d)
    print("*************************************************")
    #display the table dict_of_emp, one row per line.
    for li in dict_of_emp:
        print(li)
    print("*************************************************")
    #Incomes of Richard and Mary, to add salary and commision, first we need to cast them to integers.
    d1 = ['RICHARD','MARY']
    for li in dict_of_emp:
        if li['ename'] in d1:
            print('income of ', li['ename']," is ",int(li['salary']+li['comm']))
            
    print("*************************************************")
    #Sum of salaries based on type of job, dictionary is used so the job type is key 
    #and sum of salary is value
    jobtype_salary = {}
    for li in dict_of_emp:
        if li['job'] in jobtype_salary.keys():
            jobtype_salary[li['job']] += int(li['salary'])
        else:
            jobtype_salary[li['job']] = int(li['salary'])
    print(jobtype_salary)
    print("*************************************************")
    #Add 5000 to salaries of employees in department 30.
    for li in dict_of_emp:
        if li['dno']=='30':
            li['salary']=int(li['salary'])+5000
    for li in dict_of_emp:
        print(li)

這是 csv 作為圖像: 在此處輸入圖像描述

我認為您的列的索引略有偏差。 你做d['salary'] = row[2] ,根據 CSV 對應於第三行,即與人(秘書,銷售人員)的 position 對應。 如果您隨后嘗試將此字符串轉換為 integer,則會收到錯誤消息。

它是否與此一起運行?

for row in emps:
        d={}
        d['ename'] = row[1]
        d['job'] = row[2]
        d['salary']=row[3]
        d['comm']=row[4]
        d['dno']=row[5]
        dict_of_emp.append(d)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM