1

我正在尝试以以下格式从函数返回中写入数字数据:

[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))

我会很感激你的帮助。我仍然对列表、读取和写入文本文件以及实现特定的数据格式感到困惑。我总是以不需要的 [] 或括号结束。

4

1 回答 1

1

您可以简单地使用列表中的元素编写字符串,将每个元素与一个,或您想要的分隔符连接起来;然后,使用它们之间的 a 打印列表\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))

实际上,以下行背后的魔力非常简单

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

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

例如,如果您有一个 list 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)

希望它澄清了上面的操作。

于 2012-12-23T15:05:47.833 回答