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

Python读取文本时如何正确分割含空格的文件名字段?

提取固定格式文本中的Name字段方案

针对你遇到的文件格式,以下几种Python方法可以准确提取Name部分,即使Name包含空格也不受影响:

方法1:固定列宽切片

观察文本结构,前5列(Date、Time、Attr、Size、Compressed)的总宽度是固定的。计算后可知,Name字段从每行的第51个字符开始,直接切片即可:

with open('your_file.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()

# 跳过表头和分隔线
for line in lines[2:]:
    # 切片后去除前导空格,得到纯净的Name
    name = line[51:].strip()
    print(name)

方法2:正则表达式匹配

用正则匹配每行的固定格式,精准捕获最后一个字段的内容,适配所有符合格式的行:

import re

# 正则模式匹配前5列的格式,捕获最后部分为Name
pattern = r'^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} [A-Z.]+\s+\d+\s+\d+\s+(.*)$'

with open('your_file.txt', 'r', encoding='utf-8') as f:
    for line in f:
        line = line.strip()
        # 跳过无关行(表头、分隔线、空行)
        if not line or line.startswith('Date') or line.startswith('---'):
            continue
        match_result = re.match(pattern, line)
        if match_result:
            name = match_result.group(1)
            print(name)

方法3:csv模块处理多空格分隔

利用csv模块支持多空格分隔的特性,自动拆分列后拼接Name部分:

import csv

with open('your_file.txt', 'r', encoding='utf-8') as f:
    # 跳过表头和分隔线
    next(f)
    next(f)
    # 以任意数量空格为分隔符,忽略字段前的空格
    reader = csv.reader(f, delimiter=' ', skipinitialspace=True)
    for row in reader:
        # 前5个元素是其他列,剩下的拼接为Name(处理空格情况)
        name = ' '.join(row[5:])
        print(name)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:10:29