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

如何用Python编写函数将input.txt中的landmark数据转为列表的列表?

问题描述

我有一个名为input.txt的文本文件,内容如下:

landmark {
  x: 0.48397088050842285
  y: 0.25201746821403503
  z: -0.285147100687027
  visibility: 0.9999984502792358
}
landmark {
  x: 0.4912211298942566
  y: 0.23858927190303802
  z: -0.27364951372146606
  visibility: 0.9999926090240479
}
landmark {
  x: 0.4947235584259033
  y: 0.23917287588119507
  z: -0.27369818091392517
  visibility: 0.9999934434890747
}

需要编写Python函数,将每个landmark中的数值存入列表的列表,最终效果类似:list[0] = [0.48397,0.252017,-0.28514,0.999999],list[1] = [0.491221,0.2385892,-0.27364,0.999992],以此类推。


解决方案

方法一:逐行解析文本

针对固定结构的文本,逐行读取并筛选关键内容,提取数值后按组整理:

def parse_landmarks(file_path):
    landmarks = []
    current = []
    
    with open(file_path, 'r') as f:
        for line in f:
            stripped_line = line.strip()
            # 跳过无关行
            if not stripped_line or stripped_line in ('landmark {', '}'):
                continue
            # 提取冒号后的数值,转成float并保留6位小数
            val = round(float(stripped_line.split(':')[1].strip()), 6)
            current.append(val)
            # 每个landmark包含4个数值,收集完成就加入总列表
            if len(current) == 4:
                landmarks.append(current)
                current = []
    
    return landmarks

# 调用示例
result = parse_landmarks('input.txt')
for idx, lm in enumerate(result):
    print(f'list[{idx}] = {lm}')

方法二:正则表达式批量提取

用正则匹配所有浮点数,再按每4个一组分组,适合格式统一的场景:

import re

def parse_landmarks_regex(file_path):
    with open(file_path, 'r') as f:
        content = f.read()
    
    # 匹配所有正负浮点数
    num_strings = re.findall(r'-?\d+\.\d+', content)
    # 转换为float并分组
    landmarks = [
        [round(float(num), 6) for num in num_strings[i:i+4]]
        for i in range(0, len(num_strings), 4)
    ]
    
    return landmarks

# 调用示例
result = parse_landmarks_regex('input.txt')
for idx, lm in enumerate(result):
    print(f'list[{idx}] = {lm}')

两种方法的特点

  • 方法一逻辑清晰,能精确控制每一步处理,适合文本结构严格固定的情况。
  • 方法二更灵活,只要数值格式统一,即使文本有换行、空格变化也能正常提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:05:26