Python清洗混杂逗号/空格分隔文本 生成可检索NumPy二维数组
混合分隔符杂乱文本清洗实现方案
核心处理逻辑
严格按照需求规则逐行处理文本,最终输出规整NumPy二维数组:
- 所有英文字符统一转为小写
- 自动删除字段间连续重复的冗余空格、制表符
- 统一将空格替换为逗号作为分隔符,保留原文本中逗号对应的空字段
- 自动移除每行开头多余的逗号
- 自动对齐所有行列数,不足位置补空字符串,保证二维数组结构合法
完整实现代码
import re import numpy as np def text_to_numpy_array(file_path: str) -> np.ndarray: processed_rows = [] max_col_count = 0 # 第一轮逐行清洗,统计最大列数 with open(file_path, 'r', encoding='utf-8') as f: for raw_line in f: # 移除行尾换行符 line = raw_line.rstrip('\n') # 字母全部转小写 line = line.lower() # 连续空白字符替换为单个空格,移除首尾空格 line = re.sub(r'\s+', ' ', line).strip() # 空格替换为逗号 line = line.replace(' ', ',') # 移除行首逗号 line = line.lstrip(',') # 按逗号拆分为行元素 row = [item.strip() for item in line.split(',')] processed_rows.append(row) max_col_count = max(max_col_count, len(row)) # 对齐所有行到统一列数 for idx in range(len(processed_rows)): col_diff = max_col_count - len(processed_rows[idx]) if col_diff > 0: processed_rows[idx].extend([''] * col_diff) # 转换为NumPy二维数组 return np.array(processed_rows, dtype=str)
调用方式
将待清洗的杂乱文本保存为本地文件(例如messy_data.txt),直接调用函数即可得到结果:
my_array = text_to_numpy_array('messy_data.txt') # 输出查看结果 print(my_array)
适配场景说明
- 兼容逗号、空格、制表符混合作为分隔符的杂乱文本
- 支持ANSYS命令流导出文件这类包含特殊标记(
*、!注释、括号格式串、科学计数法数值)的复杂场景 - 完整保留原始数值、标识符、格式串内容,不会篡改原始数据
- 自动处理空行、行尾多余逗号、字段前后冗余空格等异常格式
内容的提问来源于stack exchange,提问作者livelysteak
相关产品推荐
相关产品推荐

