我有一个模拟日志,如下所示:
Time = 1
smoothSolver: Solving for Ux, Initial residual = 1, Final residual = 0.0289664, No Iterations 2
smoothSolver: Solving for Uy, Initial residual = 1, Final residual = 0.028966, No Iterations 2
smoothSolver: Solving for Uz, Initial residual = 1, Final residual = 0.0842607, No Iterations 1
GAMG: Solving for p, Initial residual = 1, Final residual = 0.0471791, No Iterations 120
time step continuity errors : sum local = 0.000235896, global = -4.03834e-05, cumulative = -4.03834e-05
smoothSolver: Solving for epsilon, Initial residual = 0.239416, Final residual = 0.0154473, No Iterations 1
smoothSolver: Solving for k, Initial residual = 1, Final residual = 0.0534371, No Iterations 2
ExecutionTime = 9.27 s ClockTime = 10 s我想使用python提取Ux、Uy、Uz、p、epsilon和k的初始值,并将它们存储在数组中。如何在python中实现这一点?
发布于 2022-10-25 10:46:02
您可以通过标准包re使用正则表达式。
import re
log = """
Time = 1
smoothSolver: Solving for Ux, Initial residual = 1, Final residual = 0.0289664, No Iterations 2
smoothSolver: Solving for Uy, Initial residual = 1, Final residual = 0.028966, No Iterations 2
smoothSolver: Solving for Uz, Initial residual = 1, Final residual = 0.0842607, No Iterations 1
GAMG: Solving for p, Initial residual = 1, Final residual = 0.0471791, No Iterations 120
time step continuity errors : sum local = 0.000235896, global = -4.03834e-05, cumulative = -4.03834e-05
smoothSolver: Solving for epsilon, Initial residual = 0.239416, Final residual = 0.0154473, No Iterations 1
smoothSolver: Solving for k, Initial residual = 1, Final residual = 0.0534371, No Iterations 2
ExecutionTime = 9.27 s ClockTime = 10 s
"""
pattern = re.compile(r'^.*Solving for (\w+), Initial residual = ([0-9.\-+eE]+), Final residual = ([0-9.\-+eE]+)')
initial_residuals = {}
final_residuals = {}
for line in log.split('\n'):
match = pattern.match(line)
if match is not None:
key = match.group(1)
initial_residuals[key] = float(match.group(2))
final_residuals[key] = float(match.group(3))
print('Initial', initial_residuals)
print('Final', final_residuals) 它将印刷字典:
首字母{'Ux':1.0,'Uy':1.0,'Uz':1.0,'p':1.0,'epsilon':0.239416,'k':1.0}
最后{'Ux':0.0289664,'Uy':0.028966,'Uz':0.0842607,'p':0.0471791,'epsilon':0.0154473,'k':0.0534371}
https://stackoverflow.com/questions/74192508
复制相似问题