如何使用xrange的结果从列表(CSV)打印行?

时间:2017-11-27 22:08:34

标签: python csv

我正在尝试弄清楚如何使用输入的xrange从列表中打印行。我试图不缩写我的代码,因为我还在学习并希望清楚地遵循逻辑。所以我想要的是从用户提供的参数中打印一系列行。我知道我有一些错误的订单,但我仍然坚持如何键入它...这是我到目前为止所拥有的:

import csv
import sys

sourcef = sys.argv[1]  # Source file path/name
destf = sys.argv[2]  # Destination file path/name
linestart = int(sys.argv[3])  # Starting row to delete
lineend = int(sys.argv[4])  # Ending row to delete

with open (sourcef, 'rb') as file1, open (destf, 'wb') as file2:
    reader = csv.reader(file1)
    writer = csv.writer(file2)
    row = list(reader)
    for i in xrange(linestart, lineend):
        print i

1 个答案:

答案 0 :(得分:1)

您想要的是slice对象而不是xrange

...
rows = list(reader)
for x in rows[slice(linestart, lineend)]:
     print x

这是更详细的形式:

...
rows = list(reader)
for x in rows[linestart: lineend]:
     print x

您可能不需要将reader迭代器实现为列表,尤其是在您只需要一小部分行的情况下。在这种情况下,您可以使用itertools.islice

from itertools import islice

...
for x in islice(reader, linestart, lineend)
     print x