2014-03-24 51 views
0

我有以下形式的字符串:字符串替换在python

"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中?如果无法实现,那么可以使用python提供的其他函数?

谢谢。

回答

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] 
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()电话。

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]] 
2
>>> [map(float, x.split()) for x in s.split(',')] 
[[77.1234, 15.3456], [79.8765, 15.6789], [81.9876, 16.0011]]