<p>在Python中,使用命名捕获组:</p>
<pre><code>(?m)^(?P<iteration>\d+(?:/\d+)?)\s+\[=+]\s+-\s+(?P<seconds>\d+)s\s+1s/step\s+-\s+loss:\s*(?P<loss>\d+\.\d+)\s+-\s+accuracy:\s*(?P<accuracy>\d+\.\d+)\s+-\s+val_loss:\s*(?P<val_loss>\d+\.\d+)\s*-\s*val_accuracy:\s*(?P<val_accuracy>\d+\.\d+)\r?\nEpoch\s+(?P<epoch_num>\d+):\s*saving model to\s*(?P<epoch_file>.*)
</code></pre>
<p>见<a href="https://regex101.com/r/TMLpTE/2" rel="nofollow noreferrer">proof</a></p>
<p>Python代码:</p>
<pre><code>regular_exp = re.compile(r'^(?P<iteration>\d+(?:/\d+)?)\s+\[=+]\s+-\s+(?P<seconds>\d+)s\s+1s/step\s+-\s+loss:\s*(?P<loss>\d+\.\d+)\s+-\s+accuracy:\s*(?P<accuracy>\d+\.\d+)\s+-\s+val_loss:\s*(?P<val_loss>\d+\.\d+)\s*-\s*val_accuracy:\s*(?P<val_accuracy>\d+\.\d+)\r?\nEpoch\s+(?P<epoch_num>\d+):\s*saving model to\s*(?P<epoch_file>.*)', re.M)
with open(filepath, 'r') as file:
results = [ match.groupdict() for match in re.finditer(file.read()) ]
</code></pre>
<p>见<a href="https://tio.run/##rZRBj6MgGIbv/RWkl9F2VBBBabbT0x432XvtGqO0NatigE5mfn0XrJ04rdlMJiVR4PMR87yK3bs@ihafz1XTCamB5DPN3zRYAzmfzyEE2/V/2w54ACUwVACpQGnemXktlFoB6OMIQzPNi@Ik8@LdlpKYYFN6zevsSiGE4FAak4zGcPazE8URQNPCFVD5a9UeQCNKXgMtQCCF0EGZ69wr8uLI@2Ggmy7oERUIe2UvPAT/ZiEMISRh7EGIGMIZDDPoQ8pChmgYmzFL/COZIQJhYE9f8qYxm/KGScRuvFmM2Y23eTie8k5gPPLGj/bG1puQJKaURd/2jia94yi882bo1psQNukdkZF39GjvqPfGCY0x6t83@443mvQmlNx6J9G9N572JuPvnDzam1y8Q0oJpldvs7Vnkh9OdS4z/tbZ3c79QjRdVXNHPv1xNr9/VJrLXFeifUnLpbNZBaZzN26qlul2vdyZ3jOHJRUvRFsqy7nK1IaEBqL3T9XCknZssdS37AB8pDFA1/kd@JHmAF7nY3BhwMWnjEfwxMpyk7Z9@oMLt@OsPTW9jb355nUMy124vcnrxV@4T882wF@uCVWdaq1MoFvQ5Lo4@gcpTl1ZFdpxwV7ISxVULRjl7@@rtrR5O/bf64LdrJNVq51hNfd8/gc" rel="nofollow noreferrer">Python proof online</a>,输出</p>
<pre><code>[
{'iteration': '00', 'seconds': '1802', 'loss': '0.3430', 'accuracy': '0.8753', 'val_loss': '0.1110', 'val_accuracy': '0.9670', 'epoch_num': '00002', 'epoch_file': '/root/data-cache/data/tmp/models/ota-cfo-10k_20200527-001913_02_0.069291627_0.98.h5'},
{'iteration': '1500/1500', 'seconds': '1679', 'loss': '0.0849', 'accuracy': '0.9739', 'val_loss': '0.0693', 'val_accuracy': '0.9807', 'epoch_num': '00003', 'epoch_file': '/root/data-cache/data/tmp/models/ota-cfo-10k_20200527-001913_03_0.055876694_0.98.h5'},
{'iteration': '1500/1500', 'seconds': '1674', 'loss': '0.0742', 'accuracy': '0.9791', 'val_loss': '0.0559', 'val_accuracy': '0.9845', 'epoch_num': '00004', 'epoch_file': '/root/data-cache/data/tmp/models/ota-cfo-10k_20200527-001913_04_0.053867317_0.99.h5'},
{'iteration': '1500/1500', 'seconds': '1671', 'loss': '0.0565', 'accuracy': '0.9841', 'val_loss': '0.0539', 'val_accuracy': '0.9850', 'epoch_num': '00005', 'epoch_file': '/root/data-cache/data/tmp/models/ota-cfo-10k_20200527-001913_05_0.053266536_0.99.h5'}
]
</code></pre>