如何用Python处理包含多个独立表头的CSV文件
处理包含两部分的CSV文件,转为独立字典
方法一:使用Python标准库csv
直接逐行读取文件,手动分隔两部分内容:
import csv part1_dict = {} part2_dicts = [] with open('your_file.csv', 'r', newline='', encoding='utf-8') as f: reader = csv.reader(f) # 处理第一部分:13列表头 + 1行数据 part1_headers = next(reader) part1_data = next(reader) part1_dict = dict(zip(part1_headers, part1_data)) # 跳过两行空行 next(reader) next(reader) # 处理第二部分:42列表头 + 多行数据 part2_headers = next(reader) for row in reader: # 跳过可能的空行(如果有的话) if not row: continue part2_dicts.append(dict(zip(part2_headers, row)))
说明:
part1_dict就是第一部分的单条数据字典part2_dicts是第二部分所有数据的字典列表- 如果空行含空格,可改成
while not next(reader).strip()循环跳过
方法二:使用pandas
通过读取所有行拆分后再转换:
import pandas as pd # 读取所有行到列表,过滤空行 with open('your_file.csv', 'r', encoding='utf-8') as f: all_lines = [line.strip().split(',') for line in f if line.strip()] # 拆分两部分:第一部分是前2行(表头+1行数据),剩余是第二部分 part1_data = all_lines[:2] part2_data = all_lines[2:] # 转成DataFrame再转字典 df_part1 = pd.DataFrame([part1_data[1]], columns=part1_data[0]) part1_dict = df_part1.to_dict('records')[0] df_part2 = pd.DataFrame(part2_data[1:], columns=part2_data[0]) part2_dicts = df_part2.to_dict('records')
说明:
- 先过滤空行再拆分,避免空行干扰
to_dict('records')将每行转为字典,第一部分取第一个元素得到单条数据字典
内容的提问来源于stack exchange,提问作者joulethief
相关产品推荐
相关产品推荐

