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

