如何在Python中连接分割线的范围

2024-10-03 23:18:05 发布

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

我有一个文本格式的日志文件,现在我想把它转换成Json。 我已经完成了一半的代码,但在加入其余的拆分行时遇到了一些问题。 所以,我已经拆分了前4行,但是我希望从“rotary”开始,直到字符串的末尾是第五行。我该怎么做

日志文件:enter image description here

我的代码:

with open('mazda', 'r', encoding='utf-8') as file:
    for content in file:
        con = str(content)
        con = con.split(' ')

        '''
         0 = date
         1 = time and code (must split this)
         2 = EMPTYY
         '''
        #
        conDate= con[0]
        con2 = con[1:]
        #time
        tmp_str1 = con[1]
        tmp_str1 = tmp_str1[:8]

        conTime = tmp_str1
        #code
        tmp_str2 = con[1]
        tmp_str2 = tmp_str2[9:]

        conCode = tmp_str2
        conStatus = con[3]


        # 데이터 가공
        file_data["Date"] = conDate
        file_data["Time"] = conTime
        file_data["Code"] = conDate
        file_data["Status"] = conStatus

        # output to JSON

        tmp = json.dumps(file_data, ensure_ascii=False, indent="\t")
        print(tmp)
        result = ""
        result += (tmp + "," + "\t")

        # print(json.dumps(file_data, ensure_ascii=False, indent="\t"))
    print("result: ")
    print(result)





Tags: 文件代码datatimecoderesultcontentcon
3条回答

您可以重新加入行的第三个元素以空格分隔后的所有内容。 我还建议您使用“;”来分割时间和代码,而不是通过索引来获取它们

file_example=["DATE HOUR;LONG SYNC ROTATORY SOMETHING WORD", 
              "DATE HOUR;LONG SYNC ROTATORY SOMETHING WORD"]

for line in file_example:
    splitted_line = line.split(" ")
    
    file_data={}
    file_data["Date"] = splitted_line[0]
    
    time_and_code = splitted_line[1].split(";")
    file_data["Time"] = time_and_code[0]
    file_data["Code"] = time_and_code[1]
    
    
    file_data["Status"] = splitted_line[2]
    file_data["Fifth_row"] = " ".join(splitted_line[3:])
    
    print(file_data)

据我所知,您的日志文件有一个模式。您预定的第4列和第5列之间有一个空格。所以你能做的就是当你有最后一个字符串时 “同步旋转…Busysni” 你可以根据空间来分割它。第一个字符串始终是第四列,其余的是第五列,可以用空格连接

你的主要问题是你的课文中有不同类型的空格。 使用不带任何参数的拆分将基于任何类型的空格拆分文本

splitted_line = line.split()

但是,由于第5列也有空格,您希望限制前三个元素的拆分:

splitted_line = line.split(None,3)

最终结果:

splitted_line = text.split(None,3)

file_data={}
file_data["Date"] = splitted_line[0]
file_data["Time"] = splitted_line[1].split(";")[0]
file_data["Code"] = splitted_line[1].split(";")[1]
file_data["Status"] = splitted_line[2]
file_data["Fifth_row"] = splitted_line[3]

相关问题 更多 >