我需要编辑一个非恒定结构的文本文件。试着使用Pandas,这是最好的工具吗?

2024-09-23 10:28:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试更改一个文本文件,但这需要做很多工作,所以我想我会利用这个机会学习如何使用python编辑文本文件

我的文本文件如下所示:

title1
title2
...
title5
var1 var2 var3 var4 var5
var1.1 var2.1 var3.1 var4.1 var5.1

诸如此类。标题可以扩展到5到18之间的任意位置,标题数=包含变量的行的列数

变量行可以达到数十万

我基本上需要添加一个标题(常量),然后在每一行上添加一个额外的列,该列依赖于该行var1(字符串)中的某个数字

熊猫是这里使用的正确东西吗?目前,当我使用read_table导入它时,它不喜欢添加分隔符信息,因为初始行只是一个单独的东西

如蒙指教,不胜感激

非常感谢


Tags: 编辑利用标题机会文本文件我会var1var2
1条回答
网友
1楼 · 发布于 2024-09-23 10:28:19

您可以使用纯Python实现它。在本例中,我首先将字符串(可以从文件中读取)解析为Python结构,执行所需的操作(添加单个标题,根据该行的第一项将列添加到该行),然后将值写回:

data = """
title1
title2
title3
title4
title5
var1 var2 var3 var4 var5
var1.1 var2.1 var3.1 var4.1 var5.1
"""

import re


# parse string to Python structures:
titles = re.findall(r'^(\w+)$', data, flags=re.M)
rows = []
for row in re.finditer(r'^.*? .*?$', data, flags=re.M):
    rows.append([])
    for values in re.finditer(r'[\w\.]+', row[0]):
        rows[-1].append(values[0])

# add title:
titles.append('NEWTITLE')

# add value to all rows (some example operation with column 0):
for row in rows:
    row.append('NEW' + row[0])

# print values back to old form:
for title in titles:
    print(title)
for row in rows:
    print(' '.join(row))

产出:

title1
title2
title3
title4
title5
NEWTITLE
var1 var2 var3 var4 var5 NEWvar1
var1.1 var2.1 var3.1 var4.1 var5.1 NEWvar1.1

相关问题 更多 >