【发布时间】:2021-07-07 08:25:46
【问题描述】:
我基本上有一个由字符串组成的嵌套列表——我的目标是将这个列表变成它们各自数据类型的列表。我在字符串、日期和浮点数方面取得了成功,但我的问题是,代码也将整数识别为浮点数。我尝试使用嵌套的 try-except 来解决这个问题,但它不起作用。也许有人找到解决方案?
from datetime import datetime
l = [['Middle Management', '5', '5584.10', '2019-02-03', '12', '100'],
['Lower Management', '2', '3925.52', '2016-04-18', '12', '100'],
['Upper Management', '1', '7174.46', '2019-01-02', '10', '200'],
['Middle Management', '5', '2921.92', '2018-02-02', '14', '300'],
['Middle Management', '7', '2921.92', '2017-09-09', '17', '400'],
['Upper Management', '10', '2921.92', '2020-01-01', '11', '500'],
['Lower Management', '2', '2921.92', '2019-08-17', '11', '500'],
['Middle Management', '5', '2921.92', '2017-11-21', '15', '600'],
['Upper Management', '7', '2921.92', '2018-08-18', '18', '700']]
columns = len(l[0]) #the number of columns is given by the number of objects in the header list, at least in a clean CSV
without_header = l[1:]
types_list = []
looping_list = []
for x in range(0, columns):
looping_list = [item[x] for item in without_header]
worklist = []
for b in looping_list:
try:
float(b)
try:
b.is_integer() #this is where it fails!
worklist.append(int)
except:
worklist.append(float)
except:
try:
b=datetime.strptime(b, "%Y-%m-%d")
worklist.append(type(b))
except:
worklist.append(type(b))
types_list.append(worklist)
types_list
我现在的输出是:
[float, float, float, float, float, float, float, float, float],
[float, float, float, float, float, float, float, float, float],
[datetime.datetime,
datetime.datetime,
datetime.datetime,
datetime.datetime,
datetime.datetime,
datetime.datetime,
datetime.datetime,
datetime.datetime,
datetime.datetime],
[float, float, float, float, float, float, float, float, float],
[float, float, float, float, float, float, float, float, float]]
但我想要的是:
[[str, str, str, str, str, str, str, str, str],
[int, int, int, int, int, int, int, int, int],
[float, float, float, float, float, float, float, float, float],
[datetime.datetime,
datetime.datetime,
datetime.datetime,
datetime.datetime,
datetime.datetime,
datetime.datetime,
datetime.datetime,
datetime.datetime,
datetime.datetime],
[int, int, int, int, int, int, int, int, int],
[int, int, int, int, int, int, int, int, int]]
````
【问题讨论】: