使用Pandas读取TXT文件表格时无法正确显示的问题
解决Pandas读取ASCII表格失败的问题
你的问题出在这个TXT是ASCII绘制的带边框表格,包含分隔线、跨行合并单元格、字段多行换行的情况,直接用read_csv指定sep='|'无法处理这些特殊格式,得先清理数据再导入。
步骤1:预处理文本数据
先读取原始文件,过滤掉边框分隔行,清理每行的多余符号和空格:
import pandas as pd # 读取原始文本 with open('/data.txt', 'r', encoding='utf-8') as f: lines = f.readlines() # 过滤边框行,清理每行内容 clean_lines = [] for line in lines: stripped_line = line.strip() # 跳过以┌、├、┐、┘开头的边框分隔行 if stripped_line.startswith(('┌', '├', '┐', '┘')): continue # 处理有效数据行:去掉首尾的│,分割字段并清理空格 if stripped_line.startswith('│') and stripped_line.endswith('│'): fields = [field.strip() for field in stripped_line[1:-1].split('|')] clean_lines.append(fields)
步骤2:处理合并单元格与多行字段
处理空字段填充(比如跨行的Library字段空值用上一行有效值),合并Title字段的多行内容:
processed_data = [] current_entry = None for fields in clean_lines: # 跳过表头行 if fields[0] == 'Library': continue # 初始化新条目 if not current_entry: current_entry = fields.copy() else: # 若当前行Library为空,说明是上一条目的续行 if fields[0] == '': # 合并Title字段 current_entry[-1] += ' ' + fields[-1] # 其他字段若有新值则更新,无则保留上一行内容 for i in range(len(current_entry)-1): if fields[i] != '': current_entry[i] = fields[i] else: # 保存上一条目,初始化新条目 processed_data.append(current_entry) current_entry = fields.copy() # 保存最后一条条目 if current_entry: processed_data.append(current_entry)
步骤3:转为DataFrame
把处理好的列表转成Pandas DataFrame:
columns = ['Library', 'Vulnerability', 'Severity', 'Status', 'Installed Version', 'Fixed Version', 'Title'] df = pd.DataFrame(processed_data, columns=columns) # 查看结果 print(df.head(10))
关键说明
- ASCII边框的分隔线会干扰
read_csv解析,必须提前过滤 - 跨行合并的字段需要手动判断,通过填充空值、合并多行文本还原完整条目
- 字段前后的多余空格要通过
strip()清理,避免分割后出现无效空字符串
内容的提问来源于stack exchange,提问作者Sergey
相关产品推荐
相关产品推荐

