python - 如何从以特定日期范围为条件的现有文件创建 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)
解决方案
假设您只想将包含的行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.
推荐阅读
- c++11 - Azure Devops 管道 - C++ - Whitesource Bolt
- terraform - 通过 Airflow 操作符运行 Terraform 命令
- azure - 使用 Azure CLI 获取 Kubernetes 负载均衡器的公网 IP
- elasticsearch - Elasticsearch - 为多个字段计算有多少记录具有特定字段值
- flutter - 使用flutter和firestore创建文档ID时如何存储文档ID
- javascript - Selenium Python - 将Javascript提取为字符串
- google-analytics - 气流连接构建凭据
- python - 使用 Python 库“请求”,我可以成功登录使用 JSEncrypt 函数作为 id 和 pw 的站点登录页面吗?
- java - 为什么(int i=0;我
关于二维数组的嵌套for循环,为什么应该是(int i=0;i<cars.length;i++),而不是(int i=0;i<=cars.length;i++)?
公共类主要{
public static void mai
- windows - 无法从其他文件夹加载 SQLite 扩展