首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Python中的文件中提取值不同的特定数据

如何从Python中的文件中提取值不同的特定数据
EN

Stack Overflow用户
提问于 2022-02-04 08:10:08
回答 3查看 55关注 0票数 0

因此,我有一个文件,从视觉系统中导入大量数据。它将数据保存在文本文件中,大约有4000行文本,每个结果有1行。我将在下面添加1行作为示例。

11/02/1970;11:56:44.000;ID;002914;轻型检查;254个;管宽1;38.7;管宽2;39.2;管宽3;39.9;管宽4;40.9;管宽5;41.2;固定行;175.20;固定孔;211.23;柱宽;0.00;布卢布尺寸;0;左角;0.00;右角;17.90;黑布布;0;0;0;全球St;14;工具系数;31;托盘编号;108;

所以我想要做的是为每一行提取一个参数以及它的值。在每一个空格之间都有一个分隔符,这使我很难。

所以如果我想选择Light,我会得到每一行的验光结果,在这个例子中是254。有人能提出一些我可以使用的功能来帮助我吗?

EN

Stack Overflow用户

发布于 2022-02-04 08:35:37

将数据结构转换为dict列表:

代码语言:javascript
复制
import csv
from datetime import datetime

with open('data.txt') as fp:
    reader = csv.reader(fp, delimiter=';')
    data = []
    for row in reader:
        row = row[:-1]
        d = {'dt': datetime.strptime(row[0] + row[1], '%d/%m/%Y %H:%M:%S.%f'),
             'id': row[3]}

        keys = row[4::2]
        vals = map(float, row[5::2])
        d.update(dict(zip(keys, vals)))
        data.append(d)

输出:

代码语言:javascript
复制
>>> data
[{'dt': datetime.datetime(1970, 2, 11, 11, 56, 44),
  'id': '002914',
  'Light Check': 254.0,
  'Tube Width1': 38.7,
  'Tube Width2': 39.2,
  'Tube Width3': 39.9,
  'Tube Width4': 40.9,
  'Tube Width5': 41.2,
  'Fixt Row': 175.2,
  'Fixt Col': 211.23,
  'Post Width': 0.0,
  'Blob Size': 0.0,
  'Left Angle': 0.0,
  'Right Angle': 17.9,
  'Dark Blob': 0.0,
  'Result': 0.0,
  'Global St': 14.0,
  'Tool Flag': 31.0,
  'Pallet No': 108.0}]

使用Python进行搜索:

代码语言:javascript
复制
out = [rec for rec in data if rec.get('Light Check') == 254]

与Pandas搜索:

代码语言:javascript
复制
df = pd.DataFrame(data)
out = df[df['Light Check'] == 254]
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70983201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档