我是 python 脚本的新手,正在为以下任务寻找解决方案:
- 打开文本文件
- 创建一个字符串数组,其中包含必须在文本文件(多行)中找到的文本(名称 + 属性)
文件摘录如下:
**HM_comp_by_property "4512_solid" 34
*SOLID SECTION, ELSET=flange2, MATERIAL=WN1.4512
**HM_comp_by_property "4512_2_0mm" 7
*SHELL SECTION, ELSET=ccc_pin , TEMPERATURE = 3, MATERIAL=WN1.4512
2.0 , 3
最后必须创建的是一个由“elset”名称及其 Material 的不同组合组成的数组:
flange2 WN1.4512
ccc_pin WN1.4512
希望您能为我提供一些入门技巧。我不期望有一个完整的解决方案,一些指南会很好 :-)。
提前致谢!
请您参考如下方法:
由于它是单行代码,因此有一种方法可以做到这一点:
with open('input_file.txt') as f:
array = [x for x in [re.findall(r'(?:ELSET|MATERIAL)=([^\s,]*)', line) for line in f] if x]
本质上,
- 打开文件
- 读取行,一次一行:
for line in f - 找到您需要的数据:
re.findall(r'(?:ELSET|MATERIAL)=([^\s,]*)', line) - 去掉空白条目:
[x for x in [...] if x]
您可能对 re.findall() 步骤感兴趣:
re.findall返回所有匹配的数组- 第一个参数是模式:
r''-- 使用原始字符串,没有\\tomfoolery。(?:ELSET|MATERIAL)- 匹配那些关键字,但不记得它们([^\s,]*)- 匹配一系列非空白、非逗号字符,并记住它们(?:ELSET|MATERIAL)=([^\s,]*)- 匹配像ELSET=foo.bar这样的文本并记住foo。条形码
因此,整个过程逐行搜索我们关心的两个模式,并返回那些 TYPE=VAL 对的值的数组。
