我有一个日志文件,需要将其转换为csv格式。为此,我需要使用|
字符替换所有空格。
到目前为止,我的代码如下:
with open('Log_jeden_den.log', 'r') as f:
for line in f:
line = re.sub(r'[ ]+(?![^[]*\])', '|', line)
这个文件的一个例子如下所示:
123.456.789.10 - - [20/Feb/2020:06:25:16 +0100] "GET /android-icon-192x192.png HTTP/1.1" 200 4026 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
如您所见,[]
和 ""
中间有空格。我不想替换他们内部的空格,只想替换外部的。
我可以使用此正则表达式[ ]+(?![^[]*\])
来处理[]
,但是如果我使用类似的正则表达式[ ]+(?![^"]*\")
来处理""
,它不起作用。我尝试了多个变体,但都没有起作用。我错过了什么吗?
如果我解决这个问题,那么我还需要结合这些正则表达式,以便我只替换这两个字符对之外的空格。这将是我的第二个问题。
编辑:如要求的示例行的输出:
123.456.789.10|-|-|[20/Feb/2020:06:25:16 +0100]|"GET|/android-icon-192x192.png|HTTP/1.1"|200|4026|"-"|"Mozilla/5.0|(Windows|NT|6.1;|WOW64;|Trident/7.0;|rv:11.0)|like|Gecko"
编辑2:这将是我期望的输出结果:
123.456.789.10|-|-|[20/Feb/2020:06:25:16 +0100]|"GET /android-icon-192x192.png HTTP/1.1"|200|4026|"-"|"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"