gpt4 book ai didi

python - 如何在特定条件下读取txt

转载 作者:太空宇宙 更新时间:2023-11-04 10:03:14 24 4
gpt4 key购买 nike

我有如下的文本文件。

A1 1234 56
B2 1234 56
C3 2345167

我有起始位置和长度表。它代表每个元素在前一个 df 中开始的位置,以及每行的长度。

start length
1 1
2 1
3 1
4 2
6 2
8 2
10 1

我想根据起始位置和长度阅读如下。

A 1 nan 12 34  5 6
B 2 nan 12 34 5 6
C 3 nan 23 45 16 7

首先,我尝试过

pd.read_csv(file.txt,sep="")

但我不知道如何拆分。

如何读取和拆分数据框?

最佳答案

如评论中所述,这不是 CSV 格式,因此我必须制定一个解决方法。

def get_row_format(length_file):

with open(length_file, 'r') as fd_len:

#Read in the file, not a CSV!
#this double list-comprehension produces a list of lists
rows = [[x.strip() for x in y.split()] for y in fd_len.readlines()]

#determine the row-format from the rows lists
row_form = {int(x[0]): int(x[1]) for x in rows[1:]} #idx 1: to skip header

return row_form

def read_with_row_format(data_file, rform):

with open(data_file, 'r') as fd_data:

for row in fd_data.readlines():

#Get the formatted output
#use .items() for Python 3.x
formatted_output = [row[k-1:k+v-1] for k, v in rform.iteritems()]
print formatted_output

第一个函数获取“行格式”,第二个函数将该行格式应用于文件中的每一行

用法:

rform = get_row_format('lengths.csv')
read_with_row_format('data.csv', rform)

输出:

['A', '1', '12', '34', '5', '6']
['B', '2', '12', '34', '5', '6']
['C', '3', '23', '45', '6', '7']

关于python - 如何在特定条件下读取txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42381022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com