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
相关产品推荐
相关产品推荐

