You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pyparsing将表格格式文本文件转换为CSV?

使用pyparsing转换ASCII表格到CSV的示例

当然可以用pyparsing来实现这个转换!这种带分隔线的ASCII表格是很典型的结构化文本,pyparsing的语法定义能力刚好能轻松处理它。下面是一个完整的可运行示例:

首先确保你已经安装了pyparsing:

pip install pyparsing

然后是转换代码:

import pyparsing as pp

def ascii_table_to_csv(table_text):
    # 定义分隔线的语法:以+开头,中间是若干个---+的组合
    separator_line = pp.Literal("+") + pp.OneOrMore(pp.Word("-") + pp.Literal("+"))
    # 定义单元格:匹配到下一个|之前的所有内容,自动忽略前后的空白
    cell = pp.SkipTo(pp.Literal("|")).setWhitespaceChars(" \t").setName("cell")
    # 定义数据行:以|开头,后面是若干个单元格+|的组合
    data_row = pp.Literal("|") + pp.ZeroOrMore(cell + pp.Literal("|"))
    
    # 解析所有行
    parsed_rows = []
    for line in table_text.splitlines():
        line = line.strip()
        if not line:
            continue
        # 跳过分隔线
        if separator_line.matches(line):
            continue
        # 解析数据行
        parsed = data_row.parseString(line)
        # 提取单元格内容,去掉每个单元格前后的空白,过滤掉空字符串(解析后会有多余空元素)
        cells = [cell.strip() for cell in parsed if cell.strip()]
        parsed_rows.append(cells)
    
    # 转换为CSV格式,用逗号分隔
    return "\n".join([",".join(row) for row in parsed_rows])

# 测试你的输入文本
input_table = """+---------------------+--------------+---------------+
| column_date | column_id | column_desc |
+---------------------+--------------+---------------+
| 2001-01-01 00:00:00 | 12345 | abc bar |
| 2001-01-01 00:00:00 | 4567 | defg |
+---------------------+--------------+---------------+"""

# 生成CSV
csv_output = ascii_table_to_csv(input_table)
print(csv_output)

代码说明:

  1. 分隔线匹配:separator_line专门识别那些由+和-组成的分隔行,解析时直接跳过这些行。
  2. 单元格解析:cell用SkipTo(pp.Literal("|"))匹配两个|之间的所有内容,同时通过setWhitespaceChars确保自动忽略单元格前后的空格和制表符。
  3. 数据行处理:解析每行后,提取有效单元格内容,过滤掉解析过程中产生的空字符串,再把每行的单元格用逗号连接成CSV行。

运行这段代码后,输出就是你期望的CSV格式:

column_date,column_id,column_desc
2001-01-01 00:00:00,12345,abc bar
2001-01-01 00:00:00,4567,defg

内容的提问来源于stack exchange,提问作者Deniz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:54:03