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

如何在C#中解析含非通用分隔符的.txt文件

嘿,看你现在需要解析这种类Lisp格式的学生信息文本文件,之前只能逐行打印,那咱们来把解析逻辑补上!我用Python给你举个实用的实现例子,思路清晰还容易扩展:

解析类Lisp格式学生信息文件的实现方案

第一步:先理清每行的结构

咱们先拆解下每行的格式:

(LIST (LIST '姓 '名 '中间名) '身份证号/ 'NONE '邮箱 GPA)

核心是把这些嵌套的列表、单引号、括号这些冗余符号清理掉,然后提取出咱们需要的四个核心字段:姓名组合、身份证号、邮箱、GPA。

第二步:编写解析函数

我写了个parse_student_line函数,专门处理单一行的解析,逻辑很直观:

def parse_student_line(line):
    # 先清理掉首尾的(LIST 和 ),再去掉所有单引号,最后清理多余空格
    cleaned = line.strip().replace('(LIST ', '').replace(')', '').replace("'", "").strip()
    # 按空格拆分,过滤掉空字符串
    segments = [seg for seg in cleaned.split() if seg]
    
    # 提取姓名部分:前三个元素是姓、名、中间名首字母
    last, first, middle = segments[0], segments[1], segments[2]
    full_name = f"{first} {middle}. {last}"
    
    # 处理身份证号:如果是NONE就转成友好提示
    id_num = segments[3] if segments[3] != "NONE" else "无身份证号记录"
    
    # 提取邮箱和GPA(GPA转成float方便后续计算)
    email = segments[4]
    gpa = float(segments[5])
    
    # 返回结构化的字典,方便后续使用
    return {
        "full_name": full_name,
        "id_number": id_num,
        "email": email,
        "gpa": gpa
    }

第三步:读取文件并批量解析

接下来就是读取文本文件,逐行调用上面的函数,处理完可以打印或者存到数据库里:

# 替换成你的txt文件路径
with open("student_records.txt", "r") as f:
    for line in f:
        # 跳过空行
        if not line.strip():
            continue
        student_info = parse_student_line(line)
        # 格式化打印,也可以改成写入CSV/数据库
        print(f"【{student_info['full_name']}】")
        print(f"  身份证号:{student_info['id_number']}")
        print(f"  邮箱:{student_info['email']}")
        print(f"  GPA:{student_info['gpa']:.2f}\n")

测试效果

用你给出的示例文本运行,输出会是这样的:

【Jane F. Doe】
  身份证号:8888675309
  邮箱:jfdoe@mail.university.edu
  GPA:2.31

【John F. Doe】
  身份证号:无身份证号记录
  邮箱:johnfdoe@mail.university.edu
  GPA:3.19

【Jim F. Doe】
  身份证号:8885551234
  邮箱:jimdoe@mail.university.edu
  GPA:3.45

额外提示

如果你的文本里还有其他特殊情况(比如中间名缺失、GPA是整数),可以在解析函数里加一些判断逻辑,比如用try-except包裹GPA的转换,避免报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:09:28