【问题标题】:How can I iterate two files of different length in python3如何在python3中迭代两个不同长度的文件
【发布时间】:2020-10-04 06:05:09
【问题描述】:

请原谅我的英语不好。

我这里有这段代码,它使用reportlab 编写pdf。我从两个 CSV 文件中挑选数据。 对于第二个文件,如果它不可用,则提供一个可选文件。 当我在 iterable 中运行它时,有些页面没有出来。我知道这是因为第一个文件和第二个文件的长度相同,但是如果执行 except 部分,第一个文件和第二个文件的长度将不同。 有没有一种方法可以对其进行编码,以便如果 file1 和 file2(except) 是可用的,那么 file2(except 的长度可以调整到与 file1 相同的级别,以便它遍历 file1 中的所有项目。

file1 = pd.read_csv('file1.csv')
try:
    file2 = pd.read_csv('file2.csv')
except:
    file2 = pd.read_csv('option2_file.csv')
c = canvas.Canvas('samplepdf.pdf')
for i, x in zip(file1,file2):
    a = i[0]
    b = i[1]
    c = i[2]
    d = i[4]

    e = x[0]
    f = x[1]

    '''
    Do something the values
    '''
c.save()

我在这里的所有内容可能都不容易理解。我想要的是遍历 file1 中的所有项目,但它没有发生,因为 file2 的项目长度不同。 想知道我是否可以找到一种方法来编写代码以将 file2 的长度调整为 file1 的长度,以便该过程成功。 File2 只是一个空文件,其中包含我键入的一些 __。

【问题讨论】:

  • itertools.zip_longest?尽管这涉及提出一个有意义的填充值。如果你有一个,那就太好了。否则,您需要定义对所有未配对值执行的操作。循环短文件?重用第一个/最后一个值?您需要更具体地了解您的需求。

标签: python for-loop iterator reportlab


【解决方案1】:

Python3 有一个名为itertools.zip_longest 的函数。根据描述,它可能完全符合您的要求。您只需为两个文件中较短的一个中缺少的元素提供默认填充值。

【讨论】:

    猜你喜欢
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 2023-03-07
    相关资源
    最近更新 更多