从一个文件中提取数据和信号

2024-09-28 22:38:12 发布

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

在开始之前,我在这里和Python都是一个初学者,我正在做一些事情,比如从文件中提取数据,然后从需要的数据中生成数据信号。我不知道该怎么解释,但我会尽力解释这个问题。我得到了一个文本文件,比如:

12 0011
15 001a
20 111e
32 8877
50 00f3 
56 1000

我能够阅读这些文件并将它们放入词典:

^{pr2}$

对于第二部分,它与文本文件相关,其中第一列表示时间,第二列表示数据。这意味着,在time=15s时,数据在time=20s之前是001a,而在time=32s之前,数据继续保持不变(111e),直到time=32s,数据再次变为8877。同样的过程还在继续。我被要求提取从时间=15s到时间=60s的输出,时间间隔为1s。问题是我不知道做这部分的确切方法。我不知道如何转到下一个键。我尝试过使用enumerate(d),但它保持弹出属性错误。我也尝试了d.iteritems().next(),但它会变成无限循环。我的代码是:

def output(d):
 a = 0
 keys = sorted(d.keys())
 while a <= 45:
  time = a + 15
  for k in keys:
   if time == k:
    sig = d[k]
   else:
    while time != k:
     k = d.iteritems().next()[0]
  print 'Time:', time, '-> Signal:' sig
  a += 1

有人能帮我吗?谢谢。在

编辑:为了更好的理解,预期输出如下:

Time: 15s -> Signal: 001a
Time: 16s -> Signal: 001a
Time: 17s -> Signal: 001a
Time: 18s -> Signal: 001a
Time: 19s -> Signal: 001a
Time: 20s -> Signal: 111e
Time: 21s -> Signal: 111e
Time: 22s -> Signal: 111e 
Time: 23s -> Signal: 111e 
... 
Time: 31s -> Signal: 111e 
Time: 32s -> Signal: 8877
Time: 33s -> Signal: 8877
...
Time: 49s -> Signal: 8877
Time: 50s -> Signal: 00f3
Time: 51s -> Signal: 00f3
...
Time: 55s -> Signal: 00f3
Time: 56s -> Signal: 1000
Time: 57s -> Signal: 1000

。。。表示时间仍在运行。这是为了根据上面的文本文件显示数据的转换。输出最高可达60秒


Tags: 数据signaltime时间keys事情nextsig
1条回答
网友
1楼 · 发布于 2024-09-28 22:38:12

假设你的文件是信号.txt在

def read_signal(filename):
    with open(filename) as fh1:
        d = {}
        for line in fh1:
            (t, s) = line.split()
            d[int(t)] = s
        for i in range(15,61):
            if i in sorted(d):
                j = d[i]
            print ("Time: " + str(i) + "s -> Signal: " + j)
read_signal("signals.txt")

相关问题 更多 >