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

Python提取文本文件每行第二、第三部分问题求助

解决提取每行指定点分隔部分的问题

哦,我明白你的问题所在了——你原来的代码只砍掉了每个字符串的第一个点前的内容,但没截断后面多余的部分,所以才会留下.green和.purple这些你不需要的内容。让我们一步步来修正这个问题:

问题分析

你的原始代码用了line.partition('.')[2],这个方法只会把字符串从第一个点处切开,返回的第三部分是第一个点之后的所有内容,所以对于yellow.blue.purple.green来说,得到的就是blue.purple.green,而不是你想要的blue.purple。

正确思路

要实现你的需求,我们需要分两层处理:

  • 首先把每行的内容按空格分割成两个独立的点分隔字符串(比如yellow.blue.purple.green和red.blue.red.purple)
  • 对每个点分隔字符串,按点分割成列表,提取第2、3个元素(Python索引从0开始,所以取索引1和2),再用点拼接起来
  • 最后把两个处理后的字符串用空格连接,写入输出文件

完整代码

with open('test.txt', 'r') as file1, open('output.txt', 'w') as file2:
    for line in file1:
        # 移除行尾换行符,按空格分割成两个目标字符串
        raw_parts = line.strip().split()
        processed_items = []
        for item in raw_parts:
            # 按点分割字符串为列表
            segments = item.split('.')
            # 确保至少有3个分段,避免索引越界错误
            if len(segments) >= 3:
                # 拼接第2、3个分段(索引1和2)
                processed = '.'.join(segments[1:3])
                processed_items.append(processed)
        # 将处理后的内容用空格连接,添加换行符后写入文件
        file2.write(' '.join(processed_items) + '\n')

代码细节说明

  • strip():移除每行末尾的换行符和前后空格,避免分割时出现空元素
  • split():默认按任意数量的空格分割,即使你的输入行里有多个空格也能正常处理
  • len(segments) >=3:做一个健壮性判断,防止某些行里的点分隔字符串不足3个部分时抛出索引错误
  • segments[1:3]:Python的切片语法,取索引1到2的元素(左闭右开,所以3是结束位置但不包含)

运行这段代码后,output.txt里的内容就会是你预期的:

blue.purple blue.red

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:46:48