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

如何提取文本文件第一列存入列表?Python优化方案问询

提取文本文件第一列内容的优化实现方法

问题场景

我的输入文件内容如下:

5MAX 5StarMax.us
ABCNL ABCNewsLive.us
AMC AMC.us

我原本用以下代码将整个文件读取到列表中:

MyLines=open("MyFile.txt",'r').read().splitlines()

得到的列表为:

['5MAX 5StarMax.us', 'ABCNL ABCNewsLive.us', 'AMC AMC.us']

但我实际需要的是仅提取每一行第一列内容组成的列表,即:

['5MAX', 'ABCNL', 'AMC']

我目前用这段代码实现了需求,但想找到更优的方案:

MyLines=[]
for x in open("MyFile.txt",'r'):
  MyLines.append(x.split(' ')[0])

(原谅可能存在的拼写或符号错误,是手动输入的)

请问是否有更好的实现方法?


几种更优的实现方案

1. 列表推导式+上下文管理器

用列表推导式简化循环逻辑,同时用with语句自动管理文件资源(避免忘记关闭文件):

with open("MyFile.txt", 'r') as f:
    my_lines = [line.split()[0] for line in f]

这里split()不带参数时,会自动分割任意空白字符(包括多个空格、制表符等),比split(' ')更鲁棒,能处理行内存在多个空格的情况。

2. 函数式风格:map+匿名函数

如果偏好函数式写法,可以用map批量处理每行数据:

with open("MyFile.txt", 'r') as f:
    my_lines = list(map(lambda line: line.split()[0], f))

map会把文件对象的每一行传入匿名函数处理,最后转成列表即可。

3. 兼容空行的鲁棒写法

如果文件可能存在空行或全空白行,可以添加过滤条件避免索引错误:

with open("MyFile.txt", 'r') as f:
    my_lines = [line.split()[0] for line in f if line.strip()]

if line.strip()会跳过空行或仅含空白字符的行,确保split()[0]不会因无元素报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:22:12