将Python列表写入文件,以分号分隔的项目

时间:2014-10-13 14:59:44

标签: python

source= numpy.array([8,9])
sink= numpy.array([7,8])
pop_percentage= numpy.array([50,70,85])
buses= numpy.array([100,150,200])
bus_capacity= numpy.array([60,90])
a=[source,sink,pop_percentage,bus_capacity,buses,['mat1','mat2']]
file = open("/home/deep/Desktop/DATA/First_Data_File.txt", "w")
for list in itertools.product(*a):
    for line in list:
        print>>file,list[0],list[1],list[2]

我已经编写了上面的代码,我在文件中得到了以下格式:

  

8 7 50

我需要使用分号分隔项目,如下所示:

  

8; 7; 50

请建议最狡猾的方式来获得这个。提前谢谢。

3 个答案:

答案 0 :(得分:2)

print>>file, ";".join([str (l) for l in list[:3]])

答案 1 :(得分:0)

您可以使用python3中的print函数:

如果使用Python 3.x:

print(*list, sep=';', file=fd)

如果使用Python 2.x(至少适用于2.7)

from __future__ import print_function
...
print(*list, sep=';', file=fd)

注意:只要您使用from __future__ import print_functionprint就会成为整个脚本文件的Python3函数......

答案 2 :(得分:0)

我个人更喜欢使用format来完全按照我想要的方式格式化我的字符串:

format_string = "{};{};{}"
print(format_string.format(list[0], list[1], list[2]))

您还可以使用print命令写入文件吗?我建议改为使用file.write

with open('file', 'w') as f:
    f.write(format_string.format(list[0], list[1], list[2]))

使用with命令可确保正确处理文件,从而无需file.close()