def generator():
nums = ['09', '98', '87', '76', '65', '54', '43']
s_chars = ['*', '&', '^', '%', '$', '#', '@',]
data = open("list.txt", "w")
for c in s_chars:
for n in nums:
data.write(c + n)
data.close()
我想在每个“c + n”之后添加换行符。
答案 0 :(得分:17)
更改
data.write(c + n)
到
data.write("%s%s\n" % (c, n))
答案 1 :(得分:5)
正确放置的data.write('\n')
会处理这个问题。只需在你要标点的循环中适当缩进即可。
答案 2 :(得分:4)
正如其他答案已经指出的那样,您可以通过在c+n
附加'\ n'或使用格式字符串“%s%s \ n”来实现。
正如我感兴趣的那样,我认为使用列表理解而不是两个嵌套循环会更加pythonic:
data.write("\n".join("%s%s"%(c,n) for c in s_chars for n in nums))
答案 3 :(得分:1)
Python的print
是标准的“带换行符的打印”功能。
因此,如果您使用Python 2.x,则可以直接执行:
print >> data, c+n
如果您使用Python 3.x:
print(c+n, file=data)
答案 4 :(得分:1)
更改
data.write(c+n)
到
data.write(c+n+'\n')
答案 5 :(得分:1)
使用writelines
和product
:
from future_builtins import map # Only do this on Python 2; makes map generator function
import itertools
def generator():
nums = ['09', '98', '87', '76', '65', '54', '43']
s_chars = ['*', '&', '^', '%', '$', '#', '@',]
# Append newlines up front, to avoid doing the work len(nums) * len(s_chars) times
# product will realize list from generator internally and discard values when done
nums_newlined = (n + "\n" for s in nums)
with open("list.txt", "w") as data:
data.writelines(map(''.join, itertools.product(s_chars, nums_newlined)))
这产生与嵌套循环相同的效果,但是使用C实现的内置(无论如何在CPython引用解释器中),从图片中删除字节代码执行开销;这可以显着提高性能,特别是对于较大的输入,并且不像其他解决方案涉及整个输出的'\n'.join
到单个字符串中执行单个write
调用,它在写入时进行迭代,因此峰值内存使用率保持固定,而不是要求你在一个字符串中同时实现内存中的整个输出。
答案 6 :(得分:0)
这个适用于我
with open(fname,'wb') as f:
for row in var:
f.write(repr(row)+'\n')
答案 7 :(得分:-1)
def generator():
nums = ['09', '98', '87', '76', '65', '54', '43']
s_chars = ['*', '&', '^', '%', '$', '#', '@',]
data = open("list.txt", "w")
for c in s_chars:
for n in nums:
data.write(c + n + "\n")
data.close()
OR
def generator():
nums = ['09', '98', '87', '76', '65', '54', '43']
s_chars = ['*', '&', '^', '%', '$', '#', '@',]
data = open("list.txt", "w")
for c in s_chars:
for n in nums:
data.write(c + n)
data.write("\n")
data.close()
取决于你想要的东西。
答案 8 :(得分:-1)
在之前的回复中,我的回答是错误的,因为我误解了要求,请忽略它。
我认为您可以使用join
来简化内部循环
data = open("list.txt", "w")
for c in s_chars:
data.write("%s%s\n" % (c, c.join(nums)))
data.close()