使用Python将数据写入特定格式的文件

时间:2012-12-23 14:56:11

标签: python-3.x

我正在尝试以函数return返回数字数据:

[1,2,3,4,5][10,11]
[6,7,8,9,10][13,14]
...

问题是我希望文本文件的格式为:

1,2,3,4,5[::tab::]10,11
6,7,8,9,10[::tab::]13,14
...

目前我正在使用

with open(outfilename,'a') as outfile:
    outfile.writelines("%s%s\n"%(major,minor))

我会感谢您的帮助。我仍然对列表,读取和写入文本文件以及实现特定的数据格式完全感到困惑。我总是以不受欢迎的[]或括号结束。

1 个答案:

答案 0 :(得分:1)

您可以使用列表中的元素编写字符串,使用,或您想要的分隔符连接每个元素;然后,在它们之间使用\t打印列表。

with open(outfilename, 'at') as outfile:

    major = ",".join(str(i) for i in major)
    minor = ",".join(str(i) for i in minor)

    outfile.writelines("%s\t%s\n" % (major, minor))

以下行后面的 magic 非常简单,实际上是:

major = ",".join(str(i) for i in major)

Python提供了一个名为list comprehension的功能,它允许您使用非常清晰明了的语法对列表元素执行操作。

例如,如果您有一个列表l = [1, 2, 3, 4, 5],则可以在列表上运行,将元素从整数转换为字符串,调用方法str()

do _something_ with _element_ foreach _element_ in list _l_
          str(element)           for       element in l

执行此操作时,将一次创建每个结果字符串,并且您在此语句中有一个生成器:

(str(element) for element in l)

由于方法join通过迭代元素列表或从生成器接收此元素来工作,您可以:

delimiter = ","
delimiter.join(str(element) for element in l)

希望它澄清上述操作。