Unicode逗号csv浮动?

时间:2015-07-12 21:39:42

标签: python unicode floating-point

我如何转换:

somelist = [u'10,1', u'2,47', u'1,6']

为:

somelist = [10.1, 2.47, 1.6]

我已经尝试replace(",", ".")而没有结果。

3 个答案:

答案 0 :(得分:3)

您确实需要替换逗号:

somelist = [float(v.replace(',', '.')) for v in somelist]

演示:

>>> somelist = [u'10,1', u'2,47', u'1,6']
>>> [float(v.replace(',', '.')) for v in somelist]
[10.1, 2.47, 1.6]

答案 1 :(得分:1)

您需要在替换逗号后强制转换该字符串。像这样:

somelist=[float(x.replace(',','.')) for x in somelist]

答案 2 :(得分:0)

由于使用逗号作为小数点字符是世界上许多地区的惯例,因此您可以将此事实与locale模块一起使用来进行转换:

somelist = [u'10,1', u'2,47', u'1,6']

locale.setlocale(locale.LC_NUMERIC, 'french')
somelist = [locale.atof(str(val)) for val in somelist]
print somelist  # -> [10.1, 2.47, 1.6]