You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

从TXT文件特定字段提取值的Python代码实现求助

解决从文件指定间隔提取单词的问题

需求场景:我需要从文件里按指定间隔提取单词。比如thing.txt的内容是:apple juice bear box bee snake water air speed height length weight,当执行命令python program.py 4 thing.txt时,希望输出box air weight(也就是第4、8、12个单词)。我写了部分Python代码,但还没完成,求帮忙完善。

我先看看你写的代码:

import sys
WordInd = sys.argv[1]
WordList=[]
NList=[]
with open(sys.argv[2])as my_file:
    for line in my_file:
        WordList=line.split(' ',int(WordInd))
        NList.append(WordList[int(WordInd)-1])
i = 0
while i<len(NList):
    print(NList[i])
    i+=...

这里有几个小问题需要调整:

  • split(' ', int(WordInd))的用法不对——这个第二个参数是分割次数,不是间隔数,会导致你只能拿到每行前int(WordInd)+1个单词,后面的内容会被合并成一个元素,没法继续提取后续符合间隔的单词。
  • 当前逻辑只提取了每行的第WordInd个单词,没处理"每隔N个取一个"的核心需求。
  • 最后while循环的i+=没有补全,而且逐个打印会换行,不符合预期的空格分隔输出格式。

我帮你调整后的代码如下:

import sys

# 先把命令行传入的间隔数转成整数,避免重复转换
step = int(sys.argv[1])
file_path = sys.argv[2]

result_words = []

with open(file_path) as my_file:
    for line in my_file:
        # 按任意空格分割所有单词,同时过滤掉空字符串(处理行首/行尾空格的情况)
        all_words = [word for word in line.strip().split() if word]
        # 从第step-1个索引开始(Python索引从0开始),每隔step取一个单词
        for idx in range(step - 1, len(all_words), step):
            result_words.append(all_words[idx])

# 把结果用空格连接起来,一次性输出符合要求的格式
print(' '.join(result_words))

简单解释下调整的细节:

  • 一开始就把命令行参数转成整数step,让代码更简洁高效
  • split()(不带参数)自动处理任意数量的空格、制表符,同时过滤空字符串避免无效元素干扰
  • range(step-1, len(all_words), step)精准拿到所有需要的单词索引:比如step=4时,索引就是3、7、11,对应第4、8、12个单词
  • 最后用' '.join()把结果拼成空格分隔的字符串,直接输出符合预期的格式

这样运行python program.py 4 thing.txt就会得到你想要的box air weight啦。

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

火山引擎 最新活动