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

如何使用Java Scanner正确拆分含随机空格的文本文件?

处理含随机空格的文本文件读取方案

针对你提供的文本(字段间多空格分隔,日期内部存在随机空格),可以用以下三种方法正确读取:

方法一:Python正则捕获 + 日期清理

适合需要后续编程处理的场景,利用正则直接捕获每行三个字段,再清理日期内的空格:

import re

# 匹配每行结构:非空格字段1 → 含空格的日期 → 非空格字段3
line_pattern = re.compile(r'^(\S+)\s+([\d\s\-/.]+)\s+(\S+)$')

with open('target_file.txt', 'r') as file:
    for raw_line in file:
        line = raw_line.strip()
        if not line:
            continue
            
        match_result = line_pattern.match(line)
        if match_result:
            field1 = match_result.group(1)
            raw_date = match_result.group(2)
            field3 = match_result.group(3)
            
            # 移除日期内部的所有空格
            clean_date = raw_date.replace(' ', '')
            print(f"{field1}\t{clean_date}\t{field3}")
        else:
            print(f"无法解析行:{line}")

方法二:命令行工具组合(sed + awk)

适合快速批量处理,无需编写完整脚本:

先通过sed清理日期内部的空格,再用awk按空格分割字段:

sed -E 's/([0-9])[[:space:]]+([-/.])/\1\2/g; s/([-/.])[[:space:]]+([0-9])/\1\2/g' your_file.txt | awk '{print $1, $2, $3}'

该命令会先移除日期中数字与分隔符(-/.)之间的空格,再输出每行三个干净的字段。

方法三:awk直接拼接日期片段

无需额外工具,直接用awk识别被空格拆分的日期片段并拼接:

awk '{
    date_str = ""
    # 第一个字段是$1,最后一个是$NF,中间片段拼接为无空格日期
    for (i=2; i<NF; i++) {
        date_str = date_str $i
    }
    printf "%s\t%s\t%s\n", $1, date_str, $NF
}' your_file.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:10:40