如何将CSV文件中的特定格式日期转换为yyyy-mm-dd格式?
CSV日期格式转换:将
date-submission列转为yyyy-mm-dd格式 方法一:使用Linux Bash(awk工具)
适合终端直接处理,无需额外依赖:
- 先定位
date-submission列的索引(表头行的列位置):
COLUMN=$(head -n1 input.csv | tr ',' '\n' | grep -n 'date-submission' | cut -d: -f1)
- 用awk处理整个CSV文件,转换日期格式并输出到新文件:
awk -v col="$COLUMN" -F',' 'NR>1 { raw_date = substr($col, 1, 8) $col = substr(raw_date, 1, 4) "-" substr(raw_date, 5, 2) "-" substr(raw_date, 7, 2) } 1' OFS=',' input.csv > output.csv
NR>1:跳过表头行,仅处理数据行- 通过
substr提取年、月、日片段,拼接为yyyy-mm-dd格式 OFS=','保证输出的CSV仍以逗号作为分隔符
方法二:使用Python
提供两种实现方式,按需选择:
方式1:使用标准csv模块(无第三方依赖)
适合轻量级处理场景:
import csv input_path = "input.csv" output_path = "output.csv" with open(input_path, "r", newline="") as infile, open(output_path, "w", newline="") as outfile: reader = csv.DictReader(infile) writer = csv.DictWriter(outfile, fieldnames=reader.fieldnames) writer.writeheader() for row in reader: # 提取前8位日期字符,拼接为目标格式 date_str = row["date-submission"][:8] formatted_date = f"{date_str[:4]}-{date_str[4:6]}-{date_str[6:8]}" row["date-submission"] = formatted_date writer.writerow(row)
方式2:使用pandas库(代码更简洁)
适合大型CSV或复杂数据操作场景,需先安装pandas:
pip install pandas
处理代码:
import pandas as pd # 读取CSV文件 df = pd.read_csv("input.csv") # 转换日期格式:提取前8位→转为日期对象→格式化为yyyy-mm-dd字符串 df["date-submission"] = pd.to_datetime(df["date-submission"].str[:8], format="%Y%m%d").dt.strftime("%Y-%m-%d") # 保存转换后的结果 df.to_csv("output.csv", index=False)
内容的提问来源于stack exchange,提问作者sysadmincrispy
相关产品推荐
相关产品推荐

