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

Python提取文本文件字段名:截断每行首个空格后的内容

解决Python提取字段名并输出的问题

先说说你代码里的几个问题,这也是导致报错的核心原因:

  • 你把输入文件test_text.txt用'w'模式打开了,这个模式是只允许写入的,根本没法读取内容,自然会抛出"not readable"的错误。
  • 输出文件my_file_edit.txt没指定打开模式,默认是'r'只读模式,就算前面的问题解决了,你也没法往里面写东西。
  • 逻辑上也不对:你要提取的是每个字段定义里首个空格前的字段名,但你的代码是把每行按空格分割后取第1个及以后的部分再用逗号连,完全不符合需求。

下面是修正后的代码,我会一步步解释:

# 输入文件用'r'只读模式打开,输出文件用'w'写入模式打开
with open('test_text.txt', 'r') as f_in, open('my_file_edit.txt', 'w') as f_out:
    # 读取所有内容,先把换行符去掉(兼容多行输入的情况)
    content = f_in.read().replace('\n', '')
    # 按逗号分割每个字段的定义,同时清理掉字段前后的空格
    field_defs = [item.strip() for item in content.split(',') if item.strip()]
    # 提取每个字段定义里首个空格前的部分,就是我们要的字段名
    field_names = [def_part.split(' ')[0] for def_part in field_defs]
    # 把所有字段名用空格连接成一行,写入输出文件
    f_out.write(' '.join(field_names))

代码细节解释:

  1. 文件模式修正:f_in用'r'确保可以读取输入内容,f_out用'w'确保可以写入结果(如果输出文件不存在会自动创建,存在则覆盖原有内容)。
  2. 内容预处理:把所有内容里的换行符去掉,避免多行输入时分割出无效的空字段;再按逗号分割成单个字段的定义,用strip()清理每个字段前后的空格(比如原内容里逗号前后的冗余空格)。
  3. 字段名提取:对每个字段定义,按空格分割后取第一个元素,就是我们需要的字段名。
  4. 结果输出:把所有字段名用空格连接成一行,直接写入输出文件。

用你提供的输入内容测试:

FIELD1 INTEGER DEFAULT -99999 , FIELD2 VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, FIELD3 INTEGER DEFAULT -99999 , FIELD4 INTEGER DEFAULT -99999 , FIELD5 INTEGER NOT NULL, FIELD6...

运行代码后,输出文件里的内容就是:

FIELD1 FIELD2 FIELD3 FIELD4 FIELD5 FIELD6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:35:43