我有一个文件,其中有一些行,其中一些行开始如下
*SOLID SECTION, ELSET=EB1, MATERIAL=Alu
*SOLID SECTION, ELSET=EB42, MATERIAL=Alu
....
....
他们的独特功能是以* SOLID开头 我想在EB之后获得同一行中的数字,因此第一次迭代应该给出1而第二次应该给出42
我使用的是
for line in inputFile:
if line.startswith('*SOLID'):
trial=line
array = line.split(' ')
target= array[2]
ID=target[-2:]
print ID
它会给我1和2作为输出。我当然可以将-2增加到-3但是逗号仍然会在那里,当我有1或任何小于10的数字作为最后一个数字时它也会包括B。有什么建议吗?我还可以使用','作为分隔数字与字母分开的问题的分隔符仍然存在!
答案 0 :(得分:0)
1,获取所需的拆分列,然后使用正则表达式获取数字
import re
line = '*SOLID SECTION, ELSET=EB1, MATERIAL=Alu'
id = line.split()[2].split('=')[-1] # this get EB1
id = re.search('\d+', id).group() # this get 1
或单独使用正则表达式
import re
line = '*SOLID SECTION, ELSET=EB1, MATERIAL=Alu'
id = re.search('(\S+\s+){2}\w+\=\w*(\d+)', line).group(2) # this get 1