-4

我在文本文件中有元组(每行一个),名称为 listCls.txt 。他们看起来像这样

(10.0, 0.0, 0.0)

(9.297883, 3.680947, 0.0)

(7.071068, 7.071068, 0.0)

我想将此文本文件作为列表导入到我的 python 脚本中,如下所示。

list = [(10.00 , 0.00 , 0.00),( 9.30,3.68 , 0.00) , (7.07, 7.07, 0.00)]

我还想将它们四舍五入到两位数。谢谢

4

2 回答 2

1

不会为你解决它,因为你没有尝试任何东西。

指导

  1. 打开文件 ( open('file.txt', r)),然后
  2. 对于您阅读的每一行:
    1. 删除括号
    2. 用逗号分隔
    3. 修剪碎片(提示.strip():)
    4. 将它们转换为数字
    5. 做你的四舍五入
    6. 组成这些数字的元组
于 2015-01-10T14:08:19.330 回答
1

我很确定有一种方法可以使用现有的 Grasshopper 组件来做到这一点,但我想试一试只是为了看看。

该位会生成一些与您的匹配的数据:

import random

f = open('listCls.txt','w')
for i in range(100):
    a = random.uniform(0, 10)
    b = random.uniform(0, 10)
    c = random.uniform(0, 10)
    f.write('({}, {}, {})\n\n'.format(a,b,c))
f.close()

然后这个位读取它:

f = open('listCls.txt','r')

list =[]

for line in f:
    if line[0]=="(":
        tup = eval(line)
        list.append(tup)

print list

我敢肯定有人会说使用 eval 是邪恶的,但是如果您已经生成了数据并且您没有在startGlobalWar()中间某个地方的调用中滑倒,那么这几乎就是 eval 的用途。

如果您不信任数据源(如果您没有成功,那么您可能不应该这样做),然后按照MightyPork的建议制作一个字符串分解器。

我省略了关于四舍五入的部分。四舍五入适用于人类。如果数据有小数位,请保留它们,直到您绝对需要为止。否则,您只会累积不准确,如果您需要将其带入现实世界,那就是它第一次在一起和必须熬夜打磨东西以使其适合之间的区别。

于 2015-01-11T10:07:30.620 回答