从文本中读取部分行

  • 本文关键字:读取部 文本 python
  • 更新时间 :
  • 英文 :


我正在尝试读取一个包含时间,温度和湿度信息的文本文件,这是形状

07:54:03.383 -> Humidity:38.00%;Temperature:20.50°C;Heat index:19.60°C;
07:59:03.415 -> Humidity:37.00%;Temperature:20.90°C;Heat index:20.01°C;
08:04:03.435 -> Humidity:37.00%;Temperature:20.90°C;Heat index:20.01°C;
08:09:03.484 -> Humidity:37.00%;Temperature:20.80°C;Heat index:19.90°C;

我想为每条线外推4条信息,并将它们绘制成图表。使用open()和fileObject.read(),我可以绘制文本到VSC终端,但我不知道如何:

  • 读取时间并以适当的方式保存(用":"分隔)
  • 读取值,例如,我可以考虑读取"湿度"后的前5个字符单词,"温度"后的前5个单词;等等......对于每一行
  • 将它们存储在适当的矢量中,然后绘制3条路径与时间的函数关系。我使用numpy作为库

假设您可以容忍将数据读取到Python字符串中,我们可以在这里使用re.findall:

# -*- coding: utf-8 -*-
import re
inp = """07:54:03.383 -> Humidity:38.00%;Temperature:20.50°C;Heat index:19.60°C;
07:59:03.415 -> Humidity:37.00%;Temperature:20.90°C;Heat index:20.01°C;
08:04:03.435 -> Humidity:37.00%;Temperature:20.90°C;Heat index:20.01°C;
08:09:03.484 -> Humidity:37.00%;Temperature:20.80°C;Heat index:19.90°C;"""
vals = re.findall(r'^(d{2}:d{2}:d{2}(?:.d+)?) -> Humidity:(d+(?:.d+)?)%;Temperature:(d+(?:.d+)?)°C;Heat index:(d+(?:.d+)?)°C;', inp, flags=re.M)
print(vals)

这个打印:

[('07:54:03.383', '38.00', '20.50', '19.60'),
('07:59:03.415', '37.00', '20.90', '20.01'),
('08:04:03.435', '37.00', '20.90', '20.01'),
('08:09:03.484', '37.00', '20.80', '19.90')]

最新更新