从python中与字符串混合的文件中的一行中获取特定数字

时间:2016-11-22 11:08:03

标签: python search integer

我有一个文件,其中有一些行,其中一些行开始如下

*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。有什么建议吗?我还可以使用','作为分隔数字与字母分开的问题的分隔符仍然存在!

1 个答案:

答案 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