我有一个UNIX时间纪元的数据。我试图仅分离特定时间范围内的数据。
例如:仅在上午8点到晚上8点之间的完整数据。即所有落在时间范围之间的数据。
任何建议如何开始请。我知道这不是提供服务的代码。我真的很想知道如何从这种分离开始。要考虑的时区是UTC +8.00。
Input data: col[2] col[3] are the start time and stop time respectively.
11048 10386 1171753215 1171753234 19
83987 85230 1171753213 1171753234 21
83987 86390 1171753213 1171753236 23
6574 12027 1171753212 1171753233 21
10788 40054 1171753217 1171753236 19
70178 6574 1171753209 1171753229 20
85241 87329 1171753205 1171753233 28
81532 88962 1171753208 1171753231 23
85271 82494 1171753213 1171753234 21
2210 6774 1171753210 1171753234 24
87563 11146 1171753203 1171753226 23
87563 84877 1171753203 1171753228 25
87563 40000 1171753203 1171753229 26
我需要将属于特定时间范围的 col [2] 和 col [3] 的数据分开。应该可以在需要时更改时间范围。
答案 0 :(得分:1)
您实际上需要比较日期时间对象,因为t1.hour >= 8 and t2.hour <= 20
将返回20.01等的真实
from datetime import datetime,time
s = "11048 10386 11717532234 1171753234 19"
start = time(8, 0, 0) # start 8:00:00 am
end = time(20, 0, 0) # end 8:00:00 pm
spl = s.split() # split line
# convert col 2 and 3 to datetime objects
t1 = datetime.fromtimestamp(float(spl[2])).time()
t2 = datetime.fromtimestamp(float(spl[3])).time()
print(t1 >= start and t2 <= end)
要将数据提取到文件:
from datetime import datetime,time
start = time(8, 0, 0)
end = time(20, 0, 0)
with open("input.txt") as f,open("output.txt","w") as f1:
for line in f:
spl = line.split()
t1 = datetime.fromtimestamp(float(spl[2])).time()
t2 = datetime.fromtimestamp(float(spl[3])).time()
if t1 >= start and t2 <= end:
f1.write(line)