-
Notifications
You must be signed in to change notification settings - Fork 0
/
combine_csv_into_one.py
55 lines (40 loc) · 1.36 KB
/
combine_csv_into_one.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
"""
CSV Merger
This script combines multiple CSV files into a single large CSV file. The output file includes an
additional column representing the category, which is derived from the input file names.
Usage:
python3 csv_merger.py
"""
import csv
import glob
import re
def get_category_from_filename(filename: str) -> str:
"""
Extract the category from a file name.
Args:
filename: The name of the file.
Returns:
The category as a string.
"""
category = filename.split(".")[0]
return " ".join(re.split('-|_', category))
def merge_csv_files(output_file: str) -> None:
"""
Merge multiple CSV files into a single CSV file.
Args:
output_file: The name of the output file.
"""
with open(output_file, "w", newline='') as output:
record_writer = csv.writer(output, lineterminator='\n')
for csv_filename in glob.glob("*.csv"):
print(csv_filename)
category = get_category_from_filename(csv_filename)
with open(csv_filename) as csvfile:
reader = csv.reader(csvfile, delimiter=',')
for row in reader:
row.insert(0, category)
print(row)
record_writer.writerow(row)
if __name__ == "__main__":
output_csv_file = "combined_large.csv"
merge_csv_files(output_csv_file)