如何将'1,1'形式的字符串转换为float(1,1)?

时间:2016-04-05 23:38:43

标签: python sorting scripting type-conversion

我有一个包含多行格式的文件:

'1  2.45       3455                 3,5'
'36 1.055   2290                   1,6'
...........
...........

我能够剥离空格并列出这样的列表:

[ ['1','2.45','3455','3,5'], ['36','1.055','2290','1,6'],[......]...]

我需要按每个列表的最后一个元素对此列表进行排序。这需要我将最后一个元素从string转换为float / int,这样我就可以将它作为“sorted”函数的一个键。结果应如下所示:

[  ['36','1.055','2290','1,6'], ['1','2.45','3455','3,5'],[......]...]

请告诉我如何进行这种转换?

2 个答案:

答案 0 :(得分:1)

使用 str.replace ,使用lambda替换逗号作为排序键,将替换的str转换为float:

l = [ ['1','2.45','3455','3,5'], ['36','1.055','2290','1,6'],['36','1.055','2290','11,6']]


print(sorted(l, key=lambda x: float(x[-1].replace(",","."))))

将按最后一个元素排序,比较为浮点数而不是字符串:

 [['36', '1.055', '2290', '1,6'], ['1', '2.45', '3455', '3,5'], ['36', '1.055', '2290', '11,6']]

答案 1 :(得分:0)

  

这要求我将最后一个元素从字符串转换为float / int,这样我就可以将其作为键排序'功能

不正确的。 req.headers['x-forwarded-for'] 参数可以返回任何对象,包括序列,只要它们是可订购的。因为序列天真地排序:

key