例如,考虑 Python 中包含字母和数字字符串的列表
a = ['Total', '1', '4', '5', '2']
如何将其转换为混合值列表
b = ['Total', 1.0, 4.0, 5.0, 2.0]
请注意,通常我们可能不知道字母字符串在列表中的位置,即我们可能有
a = ['Total', '1', '4', 'Next', '2']
例如,考虑 Python 中包含字母和数字字符串的列表
a = ['Total', '1', '4', '5', '2']
如何将其转换为混合值列表
b = ['Total', 1.0, 4.0, 5.0, 2.0]
请注意,通常我们可能不知道字母字符串在列表中的位置,即我们可能有
a = ['Total', '1', '4', 'Next', '2']
您可以使用生成器函数和异常处理:
>>> def func(seq):
for x in seq:
try:
yield float(x)
except ValueError:
yield x
...
>>> a = ['Total', '1', '4', '5', '2']
>>> list(func(a))
['Total', 1.0, 4.0, 5.0, 2.0]
只需转换除第一列之外的所有内容:
b = a[:1] + [float(i) for i in a[1:]]
从你的另一个问题来看,你正在处理一个 CSV 文件,所以如果第一列总是一个字符串,那么转换每一行的那部分是没有意义的:
>>> a = ['Total', '1', '4', '5', '2']
>>> a[:1] + [float(i) for i in a[1:]]
['Total', 1.0, 4.0, 5.0, 2.0]
您也可以使用try:
-except ValueError
方法,但是当预先知道哪些列有文本以及哪些列有数值时,为什么会产生开销呢?
假设您的最终目标不是 csv 包,我建议您使用 pandas.read_csv。