首页 > 解决方案 > 将字符串转换为整数。检查字典中的每个字段,如果它显示“Int”,则转换 csv 文件中这些特定字段的值

问题描述

我有一个带有标题的 csv 文件,以及带有值的两行,如下所示: Csv File

我在 python 中有这样的字典: Python 字典

csv 文件中的所有字段都是字符串类型。我希望其中一些字段成为整数。所以我想要做的是,将 csv 中的字段与字典进行比较,然后检查我字典中的每个字段,以及它显示“Int”的位置,我想将这些字段从 csv 转换为 Int。无法使用此当前代码执行此操作:

try:
    with open('Book1.csv', newline='') as csvFile:
        reader = csv.reader(csvFile)
        filedictreader = csv.DictReader(csvFile, delimiter=',')
        print(type(filedictreader))
        for element in filedictreader:
            for key in element:
                print(key)  
except Exception as e:
    print("Error: " + str(e))

输出:

<class 'csv.DictReader'>
Site_ID  
Site_Name
Site_Type
Latitude
Longitude
Address
Supplier
Access_Details
Access_Time
Telephone_Number
County
Battery_Hours
Cir_ID
Cir_Type
Cir_Capacity
Cir_Owner
Site_A
Site_B
Cust_Name
Redundancy
Site_A_Node
SiteA_Int
SA_Dish_Height
SA_Dish_Azm
SiteA_size
Site_B_Node
SiteB_Int
SiteB_size
SB_Dish_Height
SB_Dish_Azm
Node_ID
Node_Name
Node_IP
Node_Type
Node_Vendor
Node_Model
Location
Site_ID
Site_Name
Site_Type
Latitude
Longitude
Address
Supplier
Access_Details
Access_Time
Telephone_Number
County
Battery_Hours
Cir_ID
Cir_Type
Cir_Capacity
Cir_Owner
Site_A
Site_B
Cust_Name
Redundancy
Site_A_Node
SiteA_Int
SA_Dish_Height
SA_Dish_Azm
SiteA_size
Site_B_Node
SiteB_Int
SiteB_size
SB_Dish_Height
SB_Dish_Azm
Node_ID
Node_Name
Node_IP
Node_Type
Node_Vendor
Node_Model
Location

标签: pythoncsvdictionary

解决方案


请参阅我对您的问题的评论。在这里,我将展示如何测试每种列类型并转换值(如果它应该是整数)。但正如我评论的那样,我不知道转换后你想用它做什么。而且由于您没有dict1以任何可以复制和粘贴的形式提供字典(而且我不是要自己键入完整的声明,因此我只定义了一个条目用于演示目的)。

我删除了reader未使用的变量,并将一些变量重命名为对我来说更合乎逻辑的名称,并遵循PEP 8 -- Python 代码样式指南来命名变量。

import csv

dict1 = {
    "Site_Name": "String"
}

try:
    with open('Book1.csv', newline='') as csv_file:
        dictreader = csv.DictReader(csv_file, delimiter=',')
        for row in dictreader:
            for field_name in row:
                if dict1.get(field_name, 'String') == 'Int':
                    # conversion (can throw an exception):
                    row[field_name] = int(row[field_name])            
except Exception as e:
    print("Error:", e)

推荐阅读