我有一个包含各种列的CSV示例,我必须从给定的date
列中提取工作日。样本如下所示:
Name,Birthdate,Age,Address
ABC,3-10-2016 11:00:00AM,21,XYZ Street 21 zone
BCD,3-11-2016 15:54:00PM,22,WXY Street 21/A, S zone
CDW,4-11-2015 21:09:00PM,22,ZYX Street 21Avenue, North Zone
我想阅读CSV并提取日期以确定给定日期列的工作日
到目前为止,我已经创建了一个代码来读取CSV并获得工作日,但我无法在任何其他CSV上实现它。
代码如下:
import csv
from datetime import datetime as dt
with open('date.csv', 'r') as f:
f.readline()
for line in f:
date = dt.strptime(line.strip(), '%m-%d-%Y %H:%M:%S').strftime('%A')
print date
请在这里帮助我,因为这是我学术研究的一部分。
注意:如果问题不明确,请告诉我。 :)
答案 0 :(得分:4)
使用csv
module读取CSV文件,然后解析一列。由于您有一个带标题的文件,因此最简单的方法是使用DictReader()
方法:
import csv
from datetime import datetime
with open(filename, 'rb') as infile:
reader = csv.DictReader(infile)
for row in reader:
birthdate = row['Birthdate'] # keys are named in the first row of your CSV
birthdate = datetime.strptime(birthdate, '%m-%d-%Y %H:%M:%S')
print birthdate.strftime('%A')
答案 1 :(得分:2)
使用您导入的csv
库,如下所示:
from datetime import datetime as dt
import csv
with open('date.csv', 'rb') as f_input:
csv_input = csv.reader(f_input)
header = next(csv_input)
for row in csv_input:
print dt.strptime(row[1], '%m-%d-%Y %H:%M:%S%p').strftime('%A')
这将打印:
Thursday
Friday
Saturday
这会自动将csv文件中的每一行作为单元格列表读取。因此,在这种情况下,您可以使用row[1]
访问第二列,并将其传递给strptime
函数以获取星期几。
答案 2 :(得分:1)
试试这个:
import re
from datetime import datetime as dt
test_str = open('date.csv').read()
p = re.compile(ur'\w+,(\d+-\d+-\d+\s\d+:\d+:\d+\w{2})')
m = re.findall(p, test_str)
for i in m:
print dt.strptime(i, '%m-%d-%Y %H:%M:%S%p').strftime('%A')
输入:
Name,Birthdate,Age,Address
ABC,3-10-2016 11:00:00AM,21,XYZ Street 21 zone
BCD,3-11-2016 15:54:00PM,22,WXY Street 21/A, S zone
CDW,4-11-2015 21:09:00PM,22,ZYX Street 21Avenue, North Zone
输出:
Thursday
Friday
Saturday