我想为.txt生成优惠券号码,我在调用时将元素数量设置为参数。
我使用zip()迭代写入两列中的.txt。但是当我设置一个奇数时,zip总是丢弃一个元素。
这是我的代码:
for i, j in zip(coupon[0::2], coupon[1::2]):
w.writelines(j + '\t' + i + '\n')
如何处理?
此外,如果我尝试连续10列,如何在这里写?
for a, b, c, ....j in ~~:
这将是愚蠢的,我无法输入\t
9次。
谢谢!
答案 0 :(得分:1)
您可以使用内置帮助中的打印功能的文件选项:
打印(...)
打印(值,...,sep ='',结束='\ n',文件= sys.stdout,flush = False)默认情况下将值打印到流或sys.stdout 可选的关键字参数:
file :类似文件的对象(流);默认为当前的sys.stdout sep :在值之间插入字符串,默认为空格 end :在最后一个值后附加的字符串,默认为换行符 flush :是否强制刷新流。
print(j, i, sep='\t', end='\n', file = w)
答案 1 :(得分:1)
您可以单步执行并切掉要加入的块。
以下函数将按制表符分隔的列打印数据,或将其写入传递的文件:
import sys
def write_cols(data,n,f = sys.stdout):
for chunk in (data[i:i+n] for i in range(0,len(data),n)):
print('\t'.join(chunk), file = f)
例如,如果data = ['a','b','c','d','e','f','g','h']
则:
>>> write_cols(data,3)
a b c
d e f
g h
和
>>> f = open("testfile.txt",'w')
>>> write_cols(data,3,f)
>>> f.close()
会将相同的输出发送到该文件。