python中的字符串替换

时间:2014-03-24 18:10:33

标签: python string list python-3.x

我有一个表格的字符串:

"77.1234 15.3456,79.8765 15.6789,81.9876 16.0011"

我需要将其转换为以下形式:

[[77.1234,15.3456],[79.8765,15.6789],[81.9876,16.0011]]

有人可以帮我使用python中的replace()函数来完成这个吗?如果无法实现,那么可以使用python提供的其他功能吗?

谢谢。

4 个答案:

答案 0 :(得分:6)

将列表理解与map一起使用:

>>> s = "77.1234 15.3456,79.8765 15.6789,81.9876 16.0011"
>>> [list(map(float, x.split())) for x in s.split(',')]
[[77.1234, 15.3456], [79.8765, 15.6789], [81.9876, 16.0011]]

在Python 2中,您可以删除围绕地图的list()来电。

答案 1 :(得分:3)

使用列表理解,

首先用逗号分割字符串,然后按空格分割新列表的每个元素并将其转换为浮点类型。

>>> x = "77.1234 15.3456,79.8765 15.6789,81.9876 16.0011"
>>> [[float(j) for j in i.split()] for i in x.split(',')]
[[77.1234, 15.3456], [79.8765, 15.6789], [81.9876, 16.0011]]

它实现了与此相同的结果:

>>> x = "77.1234 15.3456,79.8765 15.6789,81.9876 16.0011"
>>> ls = []
>>> for i in x.split(','):
...     for j in i.split():
...             ls.append(float(j))
... 
>>> ls
[77.1234, 15.3456, 79.8765, 15.6789, 81.9876, 16.0011]

答案 2 :(得分:2)

replace不会将字符串转换为浮点数。您需要致电float来执行此操作。

一种选择是:

In [1]: s = "77.1234 15.3456,79.8765 15.6789,81.9876 16.0011"

In [2]: [[float(n) for n in p.split()] for p in s.split(',')]
Out[2]: [[77.1234, 15.3456], [79.8765, 15.6789], [81.9876, 16.0011]]

答案 3 :(得分:2)

>>> [map(float, x.split()) for x in s.split(',')]
[[77.1234, 15.3456], [79.8765, 15.6789], [81.9876, 16.0011]]