猿问

更改元组元素的数据类型 (PYTHON)

我正在从 csv 文件中读取数据并将其转换为元组,如下所示,


text = open('States.csv').read()

lines= text.splitlines()

data= [tuple(line.split(',')) for line in lines[1:]]

data

作为回报,我打印出我的元组,其中当前所有数据均作为字符串:


[ ('Boston', 'MA', '20489', '19715', '23610', '9.9', '401', '15.6', '4499.63'),

    ('Trenton', 'NJ', '26835', '26573', '25113', '9.9', '345', '23', '552.13') ]

我需要元素 2-4(波士顿为 20489、19715、23610,特伦顿为 26835、26573、25113)为整数,5-8 为浮点数,我该怎么做?


森栏
浏览 111回答 3
3回答

交互式爱情

你可以有:types = (str, str, int, int, int, float, float, float, float)然后改变你的:data= [tuple(line.split(',')) for line in lines[1:]]到:data = [tuple([t(val) for t, val in zip(types, line.split(','))])        for line in lines[1:]]尝试使用这些行(在标题行之后):Boston,MA,20489,19715,23610,9.9,401,15.6,4499.63Trenton,NJ,26835,26573,25113,9.9,345,23,552.13给出该值data:[('Boston', 'MA', 20489, 19715, 23610, 9.9, 401.0, 15.6, 4499.63), ('Trenton', 'NJ', 26835, 26573, 25113, 9.9, 345.0, 23.0, 552.13)]

HUWWW

首先尝试将元组转换为列表。修改它,然后更改为您想要的元组。元组是不可变的。

子衿沉夜

另一个解决方案:data = [ ('Boston', 'MA', '20489', '19715', '23610', '9.9', '401', '15.6', '4499.63'),         ('Trenton', 'NJ', '26835', '26573', '25113', '9.9', '345', '23', '552.13') ]new_t = [(*t[:2], *map(int, t[2:5]), *map(float, t[5:9])) for t in data]print(new_t)印刷:[('Boston', 'MA', 20489, 19715, 23610, 9.9, 401.0, 15.6, 4499.63),  ('Trenton', 'NJ', 26835, 26573, 25113, 9.9, 345.0, 23.0, 552.13)]
随时随地看视频慕课网APP

相关分类

Python
我要回答