名單我有這種形狀的字符串:將字符串轉換爲2元組
d="M 997.14282,452.3622 877.54125,539.83678 757.38907,453.12006 802.7325,312.0516 950.90847,311.58322 Z"
這是一個五邊形(第一個和最後一個字母是元數據和被忽視)的(x, y)
座標。我要的是2元組,將代表浮動點的座標沒有所有的克魯夫特的列表:
d = [(997.14282, 452.3622), (877.54125, 539.83678), (757.38907, 453.12006), (802.7325,312.0516), (950.90847, 311.58322)]
剪裁字符串很容易:
>>> d.split()[1:-2]
['997.14282,452.3622', '877.54125,539.83678', '757.38907,453.12006', '802.7325,312.0516']
但現在我想創建元組以簡潔的方式。這顯然沒有奏效:
>>> tuple('997.14282,452.3622')
('9', '9', '7', '.', '1', '4', '2', '8', '2', ',', '4', '5', '2', '.', '3', '6', '2', '2')
以原始的字符串,我可以寫這樣的事:
def coordinates(d):
list_of_coordinates = []
d = d.split()[1:-2]
for elem in d:
l = elem.split(',')
list_of_coordinates.append((float(l[0]), float(l[1])))
return list_of_coordinates
的正常工作:
>>> coordinates("M 997.14282,452.3622 877.54125,539.83678 757.38907,453.12006 802.7325,312.0516 950.90847,311.58322 Z")
[(997.14282, 452.3622), (877.54125, 539.83678), (757.38907, 453.12006), (802.7325, 312.0516)]
然而這一處理是一個小和一個更大程序的微不足道的部分,我寧願儘可能簡潔和簡潔。任何人都可以請給我一個不那麼冗長的方式來將字符串轉換爲2元組列表?