Python不使用pandas与csv模块读取CSV提取前5表头及5行数据
问题解决方法
你当前用readlines()读取到的内容是按行存储的字符串列表,只需要把每行字符串按CSV的逗号分隔符拆分为单列元素的列表,就可以通过列表切片快速筛选需要的列和行,不需要引入第三方库或内置csv模块,全程用原生语法即可实现。
核心逻辑说明
- CSV默认以英文半角逗号作为列分隔符,直接调用字符串的
split(',')方法,就能把单行字符串拆成按列存储的列表 - 第一行是表头行,拆分后通过切片取前5个元素即可得到目标表头
- 跳过表头行后,同样通过切片取后续5行有效数据,每行拆分后取前5列做格式化对齐输出即可
- 提前过滤文件中的空行,避免空内容导致索引报错
可直接运行的实现代码
# 替换为你的csv文件实际存储路径 csv_path = "your_data_file.csv" # 读取文件所有行,过滤空行、去掉每行首尾的空白字符和换行符 with open(csv_path, 'r', encoding='utf-8') as f: valid_lines = [line.strip() for line in f.readlines() if line.strip()] # 打印前5列表头 header_cols = valid_lines[0].split(',')[:5] print("=== 前5列表头 ===") for idx, col in enumerate(header_cols, 1): print(f"{idx}. {col.strip()}") # 打印5行样例数据,做对齐格式化 print("\n=== 5行样例数据 ===") # 打印表头行 print(" | ".join([f"{col:<18}" for col in header_cols])) print("-" * (18 * 5 + 4*3)) # 打印分隔线 # 取表头后的前5行数据打印 for line in valid_lines[1:6]: row_cols = [item.strip() for item in line.split(',')[:5]] print(" | ".join([f"{item:<18}" for item in row_cols]))
可调参数说明
- 如果你的CSV文件编码不是utf-8(比如gbk格式的中文文件),把open函数里的
encoding='utf-8'改成对应编码即可 - 代码里的
18是单列表格的固定宽度,如果你的单元格内容较长,可以把这个数值调大,保证内容显示完整 - 如果你的CSV分隔符不是英文逗号,把
split(',')里的逗号换成实际分隔符即可
内容的提问来源于stack exchange,提问作者excpro
相关产品推荐
相关产品推荐

