我有一个CSV文件,其中包含我在四个星期内工作的日期。
文件有两列[天,月]
26 8
27 8
28 8
29 8
30 8
31 8
1 9
2 9
3 9
4 9
5 9
6 9
7 9
我该如何写到两个新的CSV文件中,这些文件在月底拆分。
我希望CSV_1的输出如下:
26 8
27 8
28 8
29 8
30 8
31 8
我希望CSV_2的输出如下:
1 9
2 9
3 9
4 9
5 9
6 9
7 9
答案 0 :(得分:1)
这应该有效:
import csv
def write_new_file(data, file_counter):
with open(f'CSV_{file_counter}.csv', 'w', newline='') as new_csvfile:
writer = csv.writer(new_csvfile)
for new_row in new_data:
writer.writerow(new_row)
with open('csv.csv', newline='') as csvfile:
data = csv.reader(csvfile)
new_data = []
current_month = None
file_counter = 1
for row in data:
if current_month is None:
current_month = row[1]
if row[1] != current_month:
write_new_file(new_data, file_counter)
current_month = row[1]
file_counter += 1
new_data.clear()
new_data.append(row)
else:
write_new_file(new_data, file_counter)
可能会更短更甜,但是可以完成工作。以防万一,这也适用于任意月数的CSV文件,而不仅仅是2个月。
您可能需要更改输入文件名。现在,我将其设置为csv.csv
。您可以添加input()
以便在运行时手动输入文件名,而不是对其进行硬编码。