python写入列表到文件

时间:2015-03-25 19:19:34

标签: python arrays list file

来自this帖子,我一直在使用以下代码将列表/数组写入文件:

with open ("newhosts.txt",'w') as thefile:
    for item in hostnameIP:
      thefile.write("%s\n" % item)

其中hostnameIP是:

[['localhost', '::1'], ['localhost', '::1'], ['localhost', '::1']]

在文件中,我得到输出:

['localhost', '::1']
['localhost', '::1']
['localhost', '::1']

当我需要说

localhost, ::1
localhost, ::1
localhost, ::1

最好的方法是什么?

5 个答案:

答案 0 :(得分:3)

使用:

with open ("newhosts.txt", "w") as thefile:
    for item in hostnameIP:
        thefile.write("%s\n" % ", ".join(item))

这样,项目的每个部分都将印有“,”作为分隔符。

但是如果你想让代码更短,你也可以用换行符加入每个项目:

with open ("newhosts.txt", "w") as thefile:
    thefile.write("\n".join(map(", ".join, hostnameIP)))

答案 1 :(得分:3)

with open ("newhosts.txt",'w') as thefile:
    for item in hostnameIP:
      thefile.write("%s, %s\n" % (item[0], item[1]))

答案 2 :(得分:2)

我会使用csv模块简单地在列表列表中调用writer:

import csv
lines = [['localhost', '::1'], ['localhost', '::1'], ['localhost', '::1']]
with open ("newhosts.txt",'w') as f:
    wr = csv.writer(f)
    wr.writerows(lines)

输出:

localhost,::1
localhost,::1
localhost,::1

答案 3 :(得分:2)

从我可以看到你有一个列表作为元素列表。这就是为什么你得到你得到的结果。尝试以下代码(请参阅第三行的小改动),您将获得想要的结果。

with open ("newhosts.txt",'w') as thefile:
    for item in hostnameIP:
      thefile.write("%s\n" % ', '.join(item))

答案 4 :(得分:1)

您当前正在将列表的字符串表示打印到文件中。由于您只对列表项感兴趣,因此可以使用str.format和参数解包来提取它们:

thefile.write("{}, {}\n".format(*item))