Python:从 CSV 生成文本,每 5 行具有不同的函数
Python: Generating a Text from CSV with every 5th row Having a Different Function
我需要将 .csv 输出转换为击键字符串,供不同程序执行自动计费。在大多数情况下,如果我一次只需要自动化 4 个,它就可以工作。这是 regOutput() 函数的输出。
实际作为POS的软件有一个怪癖,即在编辑第5个条目时会中途前进到下一页。所以 pageChange() 函数需要每 5 行打印一次。所以在打印函数中 "P1" 需要在第 10 行前进到 P2,在第 15 行前进到 P3 等等,“5 CL”也需要前进到“10 CL”“15 CL”等。
所以我需要在 csv 的每五行中添加 运行 函数,然后添加。
对于不能被 5 整除的每一行,regOutput() 可以 运行。
到目前为止我有这个:
import csv
import sys
export = csv.DictReader(open("export.csv"),delimiter='\t')
sys.stdout = open('autobilling.txt','w')
def regOutput():
for row in export:
print row['SKU']
print row['Qty']
print ' '
print ' '
print 'A'
print 'P'
print row['productPriceSingle']
print 'CL'
print row['Order Store ID']
def pageChange():
for row in export:
print row['SKU']
print row['Qty']
print ' '
print ' '
print 'A'
print 'P'
print row['productPriceSingle']
print ' '
print 'P1'
print 'M'
print '5 CL'
print row['Order Store ID']
print ' '
print 'A'
感谢所有帮助。谢谢。
科里
有不止一种方法可以完成此操作,但一种方法是使用 enumerate
函数:
>>> for x in enumerate(["a", "b", "c"]):
... print x
...
(0, 'a')
(1, 'b')
(2, 'c')
然后 (index + 1) % 5
将 0
每 5 个元素。
您可以 运行 使用一个函数,如下所示:
def regOutput():
for index, row in enumerate(export):
print row['SKU']
print row['Qty']
print ' '
print ' '
print 'A'
print 'P'
print row['productPriceSingle']
if index % 5 == 4:
print ' '
print "P%u" % ((index+1) // 5)
print 'M'
print '%u CL' % (index+1)
else:
print 'CL'
print row['Order Store ID']
if index % 5 == 4:
print ' '
print 'A'
这样 for
循环将保持 运行ning 顺利进行。 enumerate
函数可用于 return 计数器,同时迭代的项目可用于确定何时执行分页。
我需要将 .csv 输出转换为击键字符串,供不同程序执行自动计费。在大多数情况下,如果我一次只需要自动化 4 个,它就可以工作。这是 regOutput() 函数的输出。 实际作为POS的软件有一个怪癖,即在编辑第5个条目时会中途前进到下一页。所以 pageChange() 函数需要每 5 行打印一次。所以在打印函数中 "P1" 需要在第 10 行前进到 P2,在第 15 行前进到 P3 等等,“5 CL”也需要前进到“10 CL”“15 CL”等。
所以我需要在 csv 的每五行中添加 运行 函数,然后添加。 对于不能被 5 整除的每一行,regOutput() 可以 运行。
到目前为止我有这个:
import csv
import sys
export = csv.DictReader(open("export.csv"),delimiter='\t')
sys.stdout = open('autobilling.txt','w')
def regOutput():
for row in export:
print row['SKU']
print row['Qty']
print ' '
print ' '
print 'A'
print 'P'
print row['productPriceSingle']
print 'CL'
print row['Order Store ID']
def pageChange():
for row in export:
print row['SKU']
print row['Qty']
print ' '
print ' '
print 'A'
print 'P'
print row['productPriceSingle']
print ' '
print 'P1'
print 'M'
print '5 CL'
print row['Order Store ID']
print ' '
print 'A'
感谢所有帮助。谢谢。 科里
有不止一种方法可以完成此操作,但一种方法是使用 enumerate
函数:
>>> for x in enumerate(["a", "b", "c"]):
... print x
...
(0, 'a')
(1, 'b')
(2, 'c')
然后 (index + 1) % 5
将 0
每 5 个元素。
您可以 运行 使用一个函数,如下所示:
def regOutput():
for index, row in enumerate(export):
print row['SKU']
print row['Qty']
print ' '
print ' '
print 'A'
print 'P'
print row['productPriceSingle']
if index % 5 == 4:
print ' '
print "P%u" % ((index+1) // 5)
print 'M'
print '%u CL' % (index+1)
else:
print 'CL'
print row['Order Store ID']
if index % 5 == 4:
print ' '
print 'A'
这样 for
循环将保持 运行ning 顺利进行。 enumerate
函数可用于 return 计数器,同时迭代的项目可用于确定何时执行分页。