将元组从文本文件导入列表

时间:2015-01-10 14:03:01

标签: python rhino grasshopper

我有一个文本文件名为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)]

我也希望将它们分成两位数。谢谢

2 个答案:

答案 0 :(得分:1)

不会为你解决,因为你没有尝试任何事情。

指南

  1. 打开文件(open('file.txt', r))和
  2. 您阅读的每一行:
    1. 删除parens
    2. 以逗号分割
    3. 修剪碎片(提示:.strip()
    4. 将它们转换为数字
    5. 做你的四舍五入
    6. 撰写这些数字的元组

答案 1 :(得分: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的建议制作字符串discombobulator。

我遗漏了有关四舍五入的部分。舍入是针对人类的。如果数据有小数位,请挂起它们,直到您完全需要。否则你只会得到累积的不准确性,如果你需要将它带入现实世界,那么它是第一次聚在一起并且不得不熬夜整理东西以使它们适合的区别。