我正在尝试使用Python生成一个显示5名员工每月费用数据的csv。以下是我的代码:
#!/usr/bin/env python
import csv
import math
emp_id = 0
year = 2017
start_month = 1
months_to_add = 12
Amount = 50.00
emp_per_month = 5
output_file = 'Monthly.csv'
def format_emp_id(id):
return "E%03d" % (id,)
with open(output_file, 'wb') as csvfile:
writer = csv.writer(csvfile,
delimiter='\t',
quotechar='"',
quoting=csv.QUOTE_MINIMAL)
writer.writerow(['ID', 'Date', 'Amount'])
for month in range(start_month, months_to_add + 1):
date = "%d-%02.d-%02.d" % (year, month, 1)
for install in range(int(emp_per_month)):
emp_id += 1
writer.writerow([format_emp_id(emp_id), date, Amount])
emp_per_month = 5
但是,这段代码给出了以下输出:
ID | Date | Amount |
E001 | 2015-01-01 | 50.00 |
E002 | 2015-01-01 | 50.00 |
E003 | 2015-01-01 | 50.00 |
E004 | 2015-01-01 | 50.00 |
E005 | 2015-01-01 | 50.00 |
E006 | 2015-02-01 | 50.00 |
E007 | 2015-02-01 | 50.00 |
E008 | 2015-02-01 | 50.00 |
E009 | 2015-02-01 | 50.00 |
E010 | 2015-02-01 | 50.00 |
但是,这不是我需要做的。我需要的是员工ID E001-E005每个月重复一次,而不是继续增加员工ID超过E005。
请告知我纠正此问题所需的修订。
答案 0 :(得分:1)
添加
emp_id = 1
在你的for循环开始时。这将重置每个monch的id值,以便每个月从一个月开始。
答案 1 :(得分:1)
我会将最里面的for
循环更改为:
for emp_id in range(1, emp_per_month+1):
writer.writerow([format_emp_id(emp_id), date, Amount])