如何用python处理txt的乱行数据

TXT文件中的串口数据出现不规则乱行

RXD: 2023/05/17: 00:57:53(454): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:54(464): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 
RXD: 2023/05/17: 00:57:54(774): 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:53(454): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:54(464): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00
RXD: 2023/05/17: 00:57:54(774): 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:53(454): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:54(464): 00  
RXD: 2023/05/17: 00:57:54(774): 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:53(454): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:54(464): 00 00 01 55 14 7D 01 75 01 77 01 
RXD: 2023/05/17: 00:57:54(774): 7C 01 72  01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:53(454): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:54(464): 00 00 01  
RXD: 2023/05/17: 00:57:54(774): 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:53(454): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:54(464): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 
RXD: 2023/05/17: 00:57:54(774): 23
RXD: 2023/05/17: 00:57:53(454): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23

如何用python处理成以下文本

RXD: 2023/05/17: 00:57:53(454): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:54(464): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:53(454): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:54(464): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:53(454): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:54(464): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:53(454): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:54(464): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:53(454): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:54(464): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:53(454): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:54(464): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23
RXD: 2023/05/17: 00:57:53(454): 00 00 01 55 14 7D 01 75 01 77 01 7C 01 72 01 78 00 00 00 00 00 00 00 00 00 00 0F 02 00 0A 03 03 14 55 23

看起来 00 00 01 是共同的前缀
那么如果开头不是 00 00 01,就连在之前的数据后面
遇到新的 00 00 01,再统一输出


# 定义用来存储完整数据的列表
full_data = []
partial_data11 = []
partial_data12 = []
# 打开文件并逐行读取
with open(r"E:\#1号机-A3_2023-5-17.txt", "r") as file:
    lines = file.readlines()

# 定义用来存储部分数据的列表
partial_data = []
# 遍历所有行
for line in lines:
    # 以":"为分隔符,获取每行中最后的数字数组部分
    values = line.split("):")[-1].strip().split(" ")
    values1 = str(line.split("):")[0])+"):"
    # print(values1)
    partial_data = []
    partial_data1 = values

    # # 如果当前行的数字数组长度为35
    if len(values) == 35:
        values.insert(0, values1)
        full_data.append(values)

    else:
        # if len(partial_data1) >0:
        print('-------------',len(partial_data1),partial_data1)
        partial_data1.insert(0, values1)
        partial_data11.append(partial_data1)
        if len(partial_data11) ==2:
            # partial_data11[0].insert(0, values1)
            TI1 = partial_data11[1][0]
            partial_data11[1].pop(0)
            partial_data111 = partial_data11[0]+partial_data11[1]
            print(partial_data111)
            full_data.append(partial_data111)
            full_data.append(TI1)
            partial_data11=[]

        # 否则将当前行的数字数组设置为部分数据


# 将完整数据写入文件
# print(full_data)
with open(r"E:\#1号机-A3_2023-5-1177.txt", "w") as file:

    for data in full_data:
        if '00' in data:
            file.write(" ".join(data) + "\n")
        else:
            file.write("".join(data) + "\n")

print("文件保存成功!")

上面代码的缺点是拼接后):为空的状态没有删除。