我正在尝试在一个文件中写入多个变量。 并且希望避免单独编写所有变量及其类型。
我用以下内容创建了varibales:
for i in range(100):
globals()['doc%s' %i] = 5.*i
将其写入文件:
df = open("test.csv")
df.write("%0.10.f;%0.10.f" % (doc1, doc2))
但我想避免在最后一行内写出所有100个带有类型的名字。
这可能吗?有没有人有想法? 谢谢!
答案 0 :(得分:1)
您的问题是您首先动态创建变量。这样做真的没有充分的理由。只需创建一个doc
dict,然后就可以将其写入文件。
答案 1 :(得分:1)
你不应该使用100个变量。而是使用包含100个值的列表。然后,您可以简单地遍历列表(或列表中的值对),并在出发时写出值。
doc = [5.*i for i in range(100)]
pairs = zip(*[iter(doc)]*2)
with open("test.csv") as df:
for a, b in pairs:
df.write("{0.10f};{0.10f}\n".format(a, b))
答案 2 :(得分:0)
如果必须以这种方式生成变量,则可以使用类似的globals
for循环来再次动态检索变量。
例如:
data = [globals()['doc%s' % i] for i in range(100)]
将变量(doc0 ... doc99)放入名为data
的列表中。然后,您可以操作列表以您希望的格式打印它。
formatted_data = ["%0.10f" % point for point in data]
df = open("test.csv", "wb")
df.write(";".join(formatted_data))
df.close()
答案 3 :(得分:-1)
使用eval()
for i in range(100):
globals()['doc%s' % i] = 5. * i
df = open("test.csv", mode='w')
for i in range(100):
df.write("%0.10f;" % eval('doc%s' % i))
亲自尝试一下。 (我的python版本2.7.8)