从字符串中释放数字

2024-04-26 22:21:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我的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

Tags: 方法text程序格式数字数组人工circle
2条回答

如果您的意思是圆(…)构造是要分析的输出。尝试以下操作:

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个数字的数组中提取的数字调用circle,您可以执行以下操作:

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

有点不合常规,但由于文件的格式是有效的Python代码,而且不受信任的代码可能没有安全风险,为什么不简单地定义一个circle函数,将所有的圆放入一个列表中,然后执行文件,如:

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)]

相关问题 更多 >