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():这是往列表里添加元素的正确方法,而不是直接赋值覆盖
你原来代码的核心问题:
- 没有提前初始化空列表,每次循环直接用
x = ...赋值,会把之前的内容覆盖,最后只保留最后一行的结果 - 两次遍历
data完全没必要,一次遍历就能同时处理名字和水果,既简洁又高效
用上面的代码运行后,就能得到你想要的:
x里是每个名字从第三个字母开始的部分,比如["ry", "m", "rry", ...]c里是对应的水果列表,比如["Apple", "Pear", "Banana", ...]
备注:内容来源于stack exchange,提问作者kenny
相关产品推荐
相关产品推荐

