来自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
最好的方法是什么?
答案 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))