<p>需要澄清的是:您请求的示例输出不符合典型的“csv”样式(逗号分隔的值)。类似地,输入日志文件仅部分符合json样式</p>
<p><strong>读取日志文件</strong>:</p>
<pre><code>import itertools
import json
data = [];
with open('in.txt', 'r') as file:
for line1,line2 in itertools.zip_longest(*[file]*2):
line1 = line1.replace('\'','"') #convert to json
line2 = line2.split(':')[-1].strip() #extract number
d = json.loads(line1) #create dictionary
d['accuracy'] = line2 #add manually
data.append(d)
</code></pre>
<p><strong>创建csv</strong>:</p>
<p>在您的情况下,我建议您根据自定义样式将字典中包含的数据转换为字符串格式</p>
<pre><code>dlm = ';'
with open('out.txt','w') as file:
bheader = True
for d in data:
#header
shead = list( d.keys() )
if bheader:
file.write( dlm.join( shead ) + '\n' )
bheader=False
#data
sdata = ['%s'%e for e in d.values() ]
file.write( dlm.join(sdata) + '\n' )
</code></pre>
<p><strong>excel</strong>:</p>
<p>正如您的评论所暗示的那样,您希望随后将数据导入excel。为了实现这一点,您可以使用excel导入对话框,并告诉它使用分隔符“;”(如上所述)。在您的示例中,还转换了十进制分隔符;可以在导入过程中指定“.”分隔符,也可以在excel中转换整个列</p>
<p>请注意,在excel中访问“神经元”的数组元素可能很困难</p>
<p><strong>文件</strong>:</p>
<p>“in.txt”</p>
<pre><code>{'convolution': 2, 'cov2d_layers': [256, 256], 'fc_layers': 3, 'neurons': [256, 128, 1024], 'optimizer': 'rmsprop'}
Accuracy: 46.63%
{'convolution': 3, 'cov2d_layers': [128, 32, 128], 'fc_layers': 3, 'neurons': [1024, 1024, 1024], 'optimizer': 'adam'}
Accuracy: 39.57%
</code></pre>
<p>'out.txt'</p>
<pre><code>convolution;cov2d_layers;fc_layers;neurons;optimizer;accuracy
2;[256, 256];3;[256, 128, 1024];rmsprop;46.63%
3;[128, 32, 128];3;[1024, 1024, 1024];adam;39.57%
</code></pre>