首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从txt中提取数据

从txt中提取数据
EN

Stack Overflow用户
提问于 2022-10-25 10:18:18
回答 1查看 40关注 0票数 -4

我有一个模拟日志,如下所示:

代码语言:javascript
复制
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中实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-25 10:46:02

您可以通过标准包re使用正则表达式。

代码语言:javascript
复制
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}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74192508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档