Skip to main content
 首页 » 编程设计

python之使用 python 创建一个字符串数组,其中包含在文件中找到的文本组合

2025年05月04日22dyllove98

我是 python 脚本的新手,正在为以下任务寻找解决方案:

  1. 打开文本文件
  2. 创建一个字符串数组,其中包含必须在文本文件(多行)中找到的文本(名称 + 属性)

文件摘录如下:

**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 对的值的数组。