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

Python读取文本文件并拆分数据到指定列表的实现问题

Python读取文本文件并拆分数据到指定列表的实现问题

嘿,我来帮你搞定这个问题~先看看你现有代码的问题:你现在每次循环都直接把x和c赋值成单个字符串,而不是往列表里追加元素,而且还重复遍历了两次文件内容,这不仅效率低,最后也只能得到最后一行的结果,完全达不到你要的列表效果。

给你一个能正常工作的实现,一步一步来:

首先我们需要先初始化两个空列表,然后一次遍历文件的每一行,同时处理名字和水果:

# 初始化两个空列表,用来存结果
x = []
c = []

with open("file.txt") as f:
    # 遍历文件中的每一行
    for line in f:
        # 先去掉行尾的换行符,再按空格拆分成名字和水果
        name, fruit = line.strip().split()
        # 截取名字从第三个字符开始的部分(Python索引从0开始,所以第三个字符对应索引2)
        truncated_name = name[2:]
        # 把处理好的内容添加到对应的列表里
        x.append(truncated_name)
        c.append(fruit)

# 验证结果
print(f"x = {x}")
print(f"c = {c}")

关键细节解释:

  • line.strip():去掉每行末尾的换行符\n,避免拆分后出现多余的空白字符
  • split():默认按空格拆分字符串,刚好匹配你文件里“名字+水果”的格式
  • name[2:]:Python的字符串索引从0开始,name[0]是第一个字符,name[1]是第二个,name[2:]就表示从第三个字符开始到末尾的所有内容,完美符合你要的“名字从第三个字母开始”的需求
  • append():这是往列表里添加元素的正确方法,而不是直接赋值覆盖

你原来代码的核心问题:

  1. 没有提前初始化空列表,每次循环直接用x = ...赋值,会把之前的内容覆盖,最后只保留最后一行的结果
  2. 两次遍历data完全没必要,一次遍历就能同时处理名字和水果,既简洁又高效

用上面的代码运行后,就能得到你想要的:

  • x里是每个名字从第三个字母开始的部分,比如["ry", "m", "rry", ...]
  • c里是对应的水果列表,比如["Apple", "Pear", "Banana", ...]

备注:内容来源于stack exchange,提问作者kenny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 15:28:12