Python:从CSV生成文本,每5行有一个不同的函数

2024-10-01 09:20:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将一个.csv输出转换成一个不同程序的按键字符串来执行自动计费。在大多数情况下,如果我一次只需要自动化4个,它就可以工作了。这是regOutput()函数的输出。 实际上作为POS机运行的软件有一个怪癖,就是在编辑第5个条目的中途进入下一页。所以pageChange()函数需要是每5行打印的内容。因此,在打印功能中,第十行的“P1”需要提前到P2,第15行的“P3”也需要提前到“10 CL”“15 CL”等。你知道吗

所以我需要让这个函数在csv的每五行运行一次,然后添加。 regOutput()可以为不能被5整除的每一行运行。你知道吗

到目前为止,我有:

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'

感谢所有的帮助。谢谢。 科里


Tags: csv函数inimportforcldefsys
2条回答

实现这一点的方法不止一种,但有一种方法是使用enumerate函数:

>>> for x in enumerate(["a", "b", "c"]):
...   print x
... 
(0, 'a')
(1, 'b')
(2, 'c')

然后(index + 1) % 5将每隔5个元素0。你知道吗

您可以使用如下所示的one函数来运行它:

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循环将保持平稳运行。enumerate函数可用于在迭代项的同时返回计数器,该计数器可用于确定何时执行分页操作。你知道吗

相关问题 更多 >