我正在从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要写成浮点数,我该怎么做?
发布于 2020-09-13 05:03:04
你可以:
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.63
Trenton,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)]发布于 2020-09-13 04:59:35
首先,尝试将元组转换为list.Modify,然后更改为所需的元组。元组是不可变的。
发布于 2020-09-13 05:07:34
另一种解决方案:
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)]https://stackoverflow.com/questions/63864863
复制相似问题