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

Python读取特定格式TXT文件并转换为目标DataFrame格式的求助

Python读取特定格式TXT文件并转换为目标DataFrame格式的求助

嘿,我来帮你搞定这个问题!你的TXT文件是类似**键: [值列表]**的自定义格式,不是标准CSV,所以直接用pd.read_csv()读出来肯定不符合预期,得先手动解析每行内容再构造DataFrame。

具体步骤和代码:

  1. 读取文件并逐行解析:先把文件内容读出来,然后拆分每行的键和值,清理掉多余的括号、引号和空格,把值转换成Python列表。
  2. 构造目标DataFrame:用解析后的列表直接生成DataFrame,还可以按需重命名列名。
import pandas as pd

# 替换成你的txt文件路径
filename = "your_data.txt"

# 读取文件内容,过滤空行
with open(filename, 'r') as f:
    lines = [line.strip() for line in f if line.strip()]

# 初始化字典存储解析后的数据
parsed_data = {}

for line in lines:
    # 拆分键和值部分(只按第一个冒号分割,避免值里有冒号的情况)
    key, value_part = line.split(': ', 1)
    # 去掉首尾的方括号,分割成单个元素
    raw_values = value_part.strip('[]').split(',')
    # 清理每个元素的引号和空格
    cleaned_values = [v.strip().strip("'") for v in raw_values]
    
    # 把mean列转换成数值类型(因为是浮点数)
    if key == 'mean':
        cleaned_values = [float(v) for v in cleaned_values]
    
    parsed_data[key] = cleaned_values

# 生成目标DataFrame
df = pd.DataFrame(parsed_data)

# 如果需要把mean列重命名成你示例里的mean_e_field
df = df.rename(columns={'mean': 'mean_e_field'})

print(df)

运行结果:

执行后会得到你想要的格式:

sub_ID  ses_ID  mean_e_field
0  sub-01  ses-01        0.3456
1  sub-02  ses-01        0.4460

小提示:

如果你的TXT文件里有格式小变动(比如冒号前后的空格不一致),可以调整split(': ', 1)为split(':'),然后对分割后的结果再用strip()清理空格就行~

备注:内容来源于stack exchange,提问作者gulo1221

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 12:48:00