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

如何在Python中将TXT文件指定位置内容存入DataFrame?

解决提取多行指定位置内容仅保留最后一行的问题

你这问题很典型——应该是循环处理文本行的时候,每次都重新创建了一个新列表,没把每行的结果累积到同一个容器里,所以最后只留下了最后一行的数据!

正确做法:初始化空列表并追加每行结果

先创建一个空列表,遍历每一行时把提取到的内容追加进去,而不是每次生成新列表。示例代码如下:

import pandas as pd

# 初始化空列表存储所有行数据
all_rows_data = []

# 打开文件并逐行处理
with open("your_target_file.txt", "r") as f:
    for line in f:
        # 按指定位置提取内容
        seg1 = line[0:2]
        seg2 = line[2:19]
        seg3 = line[44:52]
        seg4 = line[52:64]
        # 将当前行的片段作为子列表追加到总列表
        all_rows_data.append([seg1, seg2, seg3, seg4])

# 转换为DataFrame
df = pd.DataFrame(all_rows_data, columns=["Col1", "Col2", "Col3", "Col4"])

为什么之前的代码失效?

你之前写的list([line[a:b],line[c:d],line[e:f],line[g:h]]),相当于每轮循环都生成一个只装当前行数据的新列表。如果没把这个新列表存到一个持续的容器(比如上面的all_rows_data)里,每次循环的结果都会被下一次覆盖,最终就只剩最后一行的内容。

更简洁的写法:列表推导式

要是喜欢精简代码,用列表推导式可以一步完成数据收集:

import pandas as pd

with open("your_target_file.txt", "r") as f:
    all_rows_data = [[line[0:2], line[2:19], line[44:52], line[52:64]] for line in f]

df = pd.DataFrame(all_rows_data, columns=["Col1", "Col2", "Col3", "Col4"])

小提醒

  • 提前确认每行长度足够,避免出现索引越界错误;
  • 如果文本行末尾带换行符\n,它会被包含在提取片段里,要是不需要可以用line.rstrip("\n")先处理,但要确保处理后不会打乱固定位置的准确性。

内容的提问来源于stack exchange,提问作者Benjamin Lascari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 19:17:58