跟踪文件有ID和字节,时间如下:
0.516516 ID1 00 08 07 06 05 04
0.516517 ID2 00 08 07 06 05 05
0.516518 ID3 00 08 07 06 05 06
0.516519 ID4 00 08 07 06 05 07
0.516520 ID1 00 08 07 06 05 08
等......
我想制作像ID1这样的表格,时间数据会随之而来 像
0.516516 ID1 00 08 07 06 05 04
0.516520 ID1 00 08 07 06 06 08
所以需要想法如何实现我尝试了所有的事情列表,但除了列出任何其他方式之外没有找到帮助?
我想查看所有相关的数据,例如: 0.516516 ID1值是00 08 07 06 05 04和时间0.516520 ID1值是00 08 07 06 06 04我想检查我的5字节是否正确递增?
答案 0 :(得分:0)
要实现这一点,您需要从文件或某个变量中获取值,并根据endline char对它们进行拆分,这将逐行提供一个很好的列表,然后您只需检查当前是否ID1
字符串只是附加到我的输出,你就完成了。你也可以为其余的ID做同样的事情。
ID1
行的示例代码。
import re
myValues = """0.516516 ID1 00 08 07 06 05 04\n
0.516517 ID2 00 08 07 06 05 05\n
0.516518 ID3 00 08 07 06 05 06\n
0.516519 ID4 00 08 07 06 05 07\n
0.516520 ID1 00 08 07 06 05 08"""
#get IDs and init IDs dictionary
outs = {}
myIDs = set(re.findall(r'ID\d',myValues))
for ID in myIDs: # iterate for each id and file related date in myValues variable
outs[ID] = []
for ID in myIDs: # iterate for each id and file related date in myValues variable
valuesList = myValues.split("\n")
for values in valuesList :
if ID in values:
outs[ID].append(values)
for out_ in outs:
lengthOfValues = len(outs[out_])
count = 0
while count+1 < lengthOfValues:
bytes1 = int("".join(outs[out_][count].split(out_)[1].split(" ")))
bytes2 = int("".join(outs[out_][count+1].split(out_)[1].split(" ")))
time1 = float("".join(outs[out_][count].split(out_)[0].split(" ")))
time2 = float("".join(outs[out_][count + 1].split(out_)[0].split(" ")))
print("{0} Bytes Increment from {1} to {2} i.e = ".format(out_,outs[out_][count].split(out_)[1],outs[out_][count+1].split(out_)[1] ), bytes2-bytes1)
print("{0} Time Increment from {1} to {2} i.e = ".format(out_,outs[out_][count].split(out_)[0],outs[out_][count+1].split(out_)[0]), bytes2 - bytes1)
count+=1
输出
ID1 Bytes Increment from 00 08 07 06 05 04 to 00 08 07 06 05 08 i.e = 4
ID1 Time Increment from 0.516516 to 0.516520 i.e = 4
注意:此实现仅供您进行比较。
希望这有帮助
答案 1 :(得分:0)
如果您对使用第三方库感到满意,可以通过以下几行有效地使用pandas
:
import pandas as pd
from io import StringIO
mystr = StringIO("""0.516516 ID1 00 08 07 06 05 04
0.516517 ID2 00 08 07 06 05 05
0.516518 ID3 00 08 07 06 05 06
0.516519 ID4 00 08 07 06 05 07
0.516520 ID1 00 08 07 06 05 08
""")
# read file, replace mystr with 'file.csv'
df = pd.read_csv(mystr, header=None, delim_whitespace=True)
# sort by second column, write to csv
df.sort_values(1).to_csv(header=False, index=False, sep=' ')