【发布时间】:2016-02-22 21:23:48
【问题描述】:
我是新来的,你好。 我试图找到类似的问题,但我没有。所以也许它会对像我这样没有经验的程序员有所帮助。
我有这种结构的 CSV 文件:
This is the list of workers.
Company blablabla.
name^position^start_date
John^manager^2015-01-01 08:00:00.0
Mary^supervisor^2014-10-01 09:00:00.0
Lucas^worker^2013-01-01 12:00:00.0
etc...
我需要脚本来: - 删除前三行,因为不需要, - 询问用户的开始日期, - 然后脚本将删除所有具有“较早或相等日期”的行,然后用户在上一步中被要求 - 最后只留下名称(1 列)并将其保存到同一个 csv 文件中。
到目前为止我想出什么:
删除第 1,2 和 3 行:
import os
directory = ('C:/TEMP/')
os.chdir( directory )
FIRST_ROW_NUM = 1 # or 0
ROWS_TO_DELETE = {1, 2, 3}
with open( directory + 'FILE.csv', 'rt') as infile, open('FILE-NEW.csv', 'wt') as outfile:
outfile.writelines(row for row_num, row in enumerate(infile, FIRST_ROW_NUM)
if row_num not in ROWS_TO_DELETE)
读取CSV文件,定界和排序
import csv
from datetime import datetime
f = open('FILE-NEW.csv')
csv_f = csv.reader(f,delimiter='^')
csv_f = sorted(csv_f, key = lambda row: datetime.strptime(row[2], "%Y-%m-%d %H:%M:%S.%f"))
现在我卡住了,我需要向用户询问日期,但即使我将添加一个带有静态日期的变量,我应该如何使用它与日期列进行比较以删除日期较旧的行? 谢谢你的帮助。 问候
【问题讨论】:
-
欢迎来到 SO! “如果 row_num 不在 ROWS_TO_DELETE 中”很难看。这只是跳过这些行所需的顺序计数,而不是任何跨产品搜索。