许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Fluent脚本技巧:Python正则表达式常用用法

Fluent脚本技巧:Python正则表达式常用用法

阅读数 1
点赞 0
article_banner

采用上下文的方式,来匹配替换jou 脚本 中特定的字符串,相比去思考能够匹配目标字符串的复杂正则表达要方便一些,这里要用到一个分组操作:

比如这里要将下面这个jou的倒数第三行中的krige_3换成krige_4,5…20

/file/set-tui-version "19.2"
(cx-gui-do cx-activate-item "MenuBar*ReadSubMenu*Case & Data...")
(cx-gui-do cx-set-file-dialog-entries "Select File" '( "C:/Users/DELL/jupyter_script/gan_foil_opt/fan_wing_opt/case_data/krige_3/case.cas") "Case Files (*.cas*)")
(cx-gui-do cx-set-list-tree-selections "NavigationPane*List_Tree1" (list "Solution|Run Calculation"))
(cx-gui-do cx-set-list-tree-selections "NavigationPane*List_Tree1" (list "Solution|Run Calculation"))
(cx-gui-do cx-activate-item "NavigationPane*List_Tree1")
(cx-gui-do cx-set-list-tree-selections "NavigationPane*List_Tree1" (list "Solution|Run Calculation"))
(cx-gui-do cx-set-toggle-button2 "Run Calculation*Table1*CheckButton17(Solution Steering)" #t)
(cx-gui-do cx-activate-item "Run Calculation*Table1*CheckButton17(Solution Steering)")
(cx-gui-do cx-set-integer-entry "Run Calculation*Table1*IntegerEntry10(Number of Iterations)" 1000)
(cx-gui-do cx-activate-item "Run Calculation*Table1*IntegerEntry10(Number of Iterations)")
(cx-gui-do cx-activate-item "Run Calculation*Table1*PushButton22(Calculate)")
(cx-gui-do cx-activate-item "Question*Cancel")
(cx-gui-do cx-activate-item "Question*OK")
(cx-gui-do cx-activate-item "Information*OK")
(cx-gui-do cx-activate-item "MenuBar*WriteSubMenu*Case & Data...")
(cx-gui-do cx-set-file-dialog-entries "Select File" '( "C:/Users/DELL/jupyter_script/gan_foil_opt/fan_wing_opt/case_data/krige_3/case.cas") "Case/Data Files (*.cas* *.dat* )")
(cx-gui-do cx-activate-item "Question*OK")
/exit y

可以通过前后文case_data/和case.cas来匹配字符串krige_3,并将前文、后文和目标字符串分别分组,再对分组重新调用来改变该位置处的字符串。

下面是建krige模型的时候用的一段脚本,其作用是在krige_1-krige_20文件夹里分别运行cal_acc.jou脚本。

import re
m = re.compile('(case_data/)(.+)(/case.cas)')

for i in range(20):
    with open('./case_data/cal_acc.jou', 'r+') as f:
        x = f.readlines()
        x[-3] = m.sub('{}{}{}'.format(match.group(1), 'krige_{}'.format(i+1), match.group(3)), x[-3])
    with open('./case_data/cal_acc.jou', 'w') as f:
        f.writelines(x)
    os.system('"fluent地址\\fluent.exe" 3d -hidden -t16 -i jou地址/cal_acc.jou')

如果不用分组操作,也可以达到类似目的,比如用:

for i in range(20):
	m = re.compile('krige_(\d+)')
	m.sub('krige_{}'.format(i+1), x[-3])

这样也可以起到相同的效果,但在一些复杂的语句里,有时候思考相应匹配的正则表达式要花掉很多时间。

目前我个人觉得,仅在fluent脚本的自动化方面,采用上下文分组匹配的方法更加实用。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空