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) % 50 每 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 计数器,同时迭代的项目可用于确定何时执行分页。