擅长:python、mysql、java
<p>你可以用regex来做这个。下面的正则表达式与您的时间戳完全匹配</p>
<pre><code>import re
pattern = re.compile("\[(\d){4}\-(\d){2}\-(\d){2}\s(\d){2}:(\d){2}:(\d){2}\]")
# will match with your timestamp so you can skip these lines and concatenate others
pattern.match(line)
</code></pre>
<p>完整的解决方案如下所示:</p>
<pre><code>import re
pattern = re.compile("\[(\d){4}\-(\d){2}\-(\d){2}\s(\d){2}:(\d){2}:(\d){2}\]")
with open("test.txt") as log_fd:
file = log_fd.readlines()
x =""
last = False
for line in file:
if not line in ['\n', '\r\n']:
if pattern.match(line):
if last:
x = x + '\n' + line.strip('\r\n')
else:
x = x + '\n' + line.strip('\r\n')
else:
x = x + ' | ' + line.strip('\r\n')
last = pattern.match(line)
print(x)
</code></pre>
<p>它将在字符串的开头有一个空行,但它将用字符串求解并打印出结果。绝对不是最优雅的</p>