2015-02-24 41 views
-2

我有一個程序一個非常惱人的輸出格式爲我的X,Y,R值,即:騰出數

circle(201.5508,387.68505,2.298685) # text={1} 
circle(226.21442,367.48613,1.457215) # text={2} 
circle(269.8067,347.73605,1.303065) # text={3} 
circle(343.29599,287.43024,6.5938) # text={4} 

有沒有辦法讓3號出到一個數組,而不做體力勞動?

所以我想上面的輸入成爲

201.5508,387.68505,2.298685 
226.21442,367.48613,1.457215 
269.8067,347.73605,1.303065 
343.29599,287.43024,6.5938 
+0

什麼是'文本= {1}'? – 2015-02-24 14:03:25

+1

我嘲笑「體力勞動」。如果只有我可以寫所有我的代碼沒有手工勞動:( – HavelTheGreat 2015-02-24 14:04:42

+0

我想你想使用'.split()',但不能確定有限的信息 – user2097159 2015-02-24 14:07:27

回答

1

如果你的意思是圓(...)結構是要分析輸出。嘗試是這樣的:

import re 

a = """circle(201.5508,387.68505,2.298685) # text={1} 
circle(226.21442,367.48613,1.457215) # text={2} 
circle(269.8067,347.73605,1.303065) # text={3} 
circle(343.29599,287.43024,6.5938) # text={4}""" 

for line in a.split("\n"): 
    print [float(x) for x in re.findall(r"\d+(?:\.\d+)?", line)] 

否則,你可能意味着你要調用圈與含3個數字,你可以做一個數組拍攝的數字:

arr = [343.29599,287.43024,6.5938] 
circle(*arr) 
0

有點非正統的,但由於您的文件格式是有效的Python代碼,並且可能沒有關於不可信代碼的安全風險,爲什麼不簡單定義一個將所有圓圈放入列表並執行文件的函數:

circles = [] 

def circle(x, y, r): 
    circles.append((x, y, r)) 

execfile('circles.txt') 

circles現在的xyr包含列表三胞胎:

[(201.5508, 387.68505, 2.298685), 
(226.21442, 367.48613, 1.457215), 
(269.8067, 347.73605, 1.303065), 
(343.29599, 287.43024, 6.5938)]