首页 > 解决方案 > 如何从以特定日期范围为条件的现有文件创建 CSV 文件

问题描述

我是编程新手,我正在尝试使用一个非常大的文件,该文件不断使 Excel 崩溃。我真的不需要使用 Python 中的数据,而只是想用我需要的东西创建一个新文件。该文件是公司列表,我想获取所有在 2020 年注册的公司。

excel 文件包含 34 列(计数 0-34)。最后一列 (34) 是包含注册日期的列。

import csv

with open('Business_Entities_in_Colorado.csv', 'r') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')

    with open('New_File.csv', 'w') as new_file:
        csv_writer = csv.writer(new_file)

        for line in csv_reader:
            if '2020' in line[34]:
                csv_writer.writerow((line),)
            else:
                print('Not found.') 

我坚持这一点,我最好的猜测是我在这里搞砸了:

if '2020' in line[34]

我最初以为我没有算零,所以尝试了第 35 位,但它超出了范围,所以我知道我正在查看正确的列。好吧,也许我不知道,因为我无法弄清楚。

编辑:我没有例外。它只是显示“未找到”。该列日期格式的示例:03/02/2020 (MM/DD/YYYY)

标签: pythoncsv

解决方案


假设您只想将包含的行2020从一个文件复制/提取到另一个文件,则不需要使用该csv模块,并且可以逐行处理输入文件。

由于您没有提供任何示例输入数据,因此我生成了一个非常基本的示例,以便能够展示一般方法。我的示例文件Input.txt如下所示:

1990 - Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
1996 - Aenean commodo ligula eget dolor. Aenean massa.
2020 - Cum sociis natoque penatibus et magnis dis parturient montes
2000 - nascetur ridiculus mus. Donec quam felis, ultricies nec
1976 - pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim.
2020 - Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu.
2002 - In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.
2000 - Nullam dictum felis eu pede mollis pretium. Integer tincidunt.
2009 - Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus.
2003 - Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim.
1999 - Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus.
2010 - Phasellus viverra nulla ut metus varius laoreet.
1990 - Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue.
1983 - Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus.
2020 - Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum.
2019 - Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus.
2016 - Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt.
2008 - Duis leo. Sed fringilla mauris sit amet nibh.
1973 - Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc

假设您要提取数据的标准每行都是唯一的,您可以忽略任何列顺序或列结构,只需查看每行的内容,如下所示:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

INPUT_FILE_NAME = 'Input.txt'
OUTPUT_FILE_NAME = 'Output.txt'

with open(INPUT_FILE_NAME, 'r') as input_file:
    with open(OUTPUT_FILE_NAME, 'w') as output_file:
        for line in input_file:
            if '2020' in line:
                output_file.write(line)

提取的数据将写入一个输出文件Output.txt,该文件仅包含以下行2020

2020 - Cum sociis natoque penatibus et magnis dis parturient montes
2020 - Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu.
2020 - Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum.

推荐阅读