我有一个主csv文件main.csv包含许多字段,但四个重要的字段是ID,Name,Date和Status。只是为了澄清,名称和ID字段不是唯一的。相同的将出现在多行上。
我正在尝试使用for循环来浏览主文件并按名称和ID分析结果,在每个独特的情况下,我想比较日期并选择未来最远的日期。
我到目前为止,现在我正在努力。下面是我的脚本和输出到目前为止
脚本
import csv
s=open('combined.csv')
mainfile = csv.reader(s)
id = ['1','4']
Name = ['Anthony', 'Bob']
Status = ['New', 'Old']
for r in mainfile:
for m in Name:
for t in id:
if r[10] in (None, ""):
pass
elif r[3] == m:
if r[5] == t:
print (r[3], r[5], r[6], r[11])
输出示例:
('Anthony', '1', '10', '4/3/2017')
('Anthony', '1', '11', '5/2/2017')
('Anthony', '1', '13', '12/30/2017'
('Anthony', '1', '15', '8/20/2017')
('Anthony', '4', '17', '2/3/2018')
('Anthony', '4', '18', '3/28/2017')
('Bob', '1', '111', '4/3/2017')
('Bob', '1', '200', '5/2/2017')
('Bob', '1', '113', '12/30/2017')
('Bob', '1', '115', '8/20/2017')
('Bob', '4', '117', '2/3/2018')
('Bob', '4', '118', '3/28/2017')
我被挂了,因为我不想查看名称和ID字段的唯一位置,并比较所有这些日期,并在将来为每个日期返回最远的日期,然后将其打印到文件中。
有人可以帮忙吗?
答案 0 :(得分:0)
您需要datetime
使用.strptime
方法,sorted
使用key
参数。
from datetime import datetime
def get_date(date):
return datetime.strptime('%m/%d/%Y', date)
ids = ('1', '4')
names = ('Anthony', 'Bob')
lines = []
with open('combined.csv', 'r', newline='') as s:
mainfile = csv.reader(s)
for r in mainfile:
if r[10] and r[3] in names and r[5] in ids:
lines.append((r[3], r[5], r[6], r[11]))
lines = sorted(lines, key=lambda line: get_date(line[3]))
for line in lines:
print(line)
像这样的东西。未经测试。