我有以下形式的字符串:字符串替換在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提供的其他函數?
謝謝。
我有以下形式的字符串:字符串替換在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提供的其他函數?
謝謝。
使用列表理解,
先拆用逗號的字符串,然後通過空間分割新的列表中的每個元素都丟一個浮動類型。
>>> 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]
使用列表理解與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()
電話。
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]]
>>> [map(float, x.split()) for x in s.split(',')]
[[77.1234, 15.3456], [79.8765, 15.6789], [81.9876, 16.0011]]