Python:编写包含大量变量的文本文件

时间:2016-09-29 08:22:01

标签: python csv file-writing

我需要创建一个文本文件(来自Python代码),每行包含50个变量,由comm分隔。我采用规范的方式     output.write(" {},{},{},{},{},{},{},{},{},{},... \ n" .format(v ,v,v,v,... 但是这很难以阅读,并且很难用这么多变量来维护。还有其他建议吗?我想过使用csv模块,毕竟我写的是(有点)csv文件,但我想先听听其他建议。

2 个答案:

答案 0 :(得分:0)

使用列表

当达到少数彼此相关的变量时,通常使用listdict。如果您创建一个列表:

myrow = []
myrow.append(v1)
...

这也允许更容易地循环每个值。完成后,您可以轻松地将其连接到字符串:

f.write(','.join(myrow))

如果您的行可能包含任何逗号(或您用作分隔符的任何内容),则必须确保转义。在这种情况下,CSV模块有助于:

import csv
with open('myfile.csv', 'w') as f:
  fw = csv.writer(f)
  fw.writerow(myrow)   # where myrow is a list

使用dicts

有些人更喜欢添加额外的结构,例如:

myrow = {}
myrow['speed'] = speed_value
myrow['some_other_row'] = other_value

import csv
with open('myfile.csv', 'w') as f:
  fw = csv.writer(f)
  fw.writerow(myrow)

答案 1 :(得分:0)

如果您可以对变量进行排序,则可以使用locals()。

例如:

我设置了三个变量:

var1 = 'xx'
var2 = 'yy'
var3 = 'zz'

我可以按排序()来排序。

def sort(x):
    if len(x) != 4:
        return '99'
    else:
        return x[-1]

sortVars = sorted(locals(), key=sort)

然后,使用 for 组合它们。

result = ''

for i in sortVars[:3]:
    result += locals()[i]

print(result)