正则表达式从python中的方括号中提取特定数字

时间:2018-11-30 10:40:06

标签: python

这是我的字符串:

"ABC[5],DEF[3],GHF[1],GBM[1],NECU[1],KIR[1],LGAD[18]"             

鉴于搜索关键字为LGAD,我的输出应为18。
我不确定如何在python中做到这一点。请同样帮我。

4 个答案:

答案 0 :(得分:0)

您可以使用以下正则表达式:

import re

text = "ABC[5],DEF[3],GHF[1],GBM[1],NECU[1],KIR[1],LGAD[18]"
key = 'LGAD'


def find(k):
    pattern = k + '\[(\d+)\]'
    match = re.search(pattern, text)
    return match.group(1)


result = find(key)
print(result)

输出

18

模式k + '\[(\d+)\]'与搜索键(k)匹配,后跟括在方括号内的一组数字。

答案 1 :(得分:0)

它看起来结构很好。我不会为此使用正则表达式。

ip = "ABC[5],DEF[3],GHF[1],GBM[1],NECU[1],KIR[1],LGAD[18]"             

def parse(ip):
   d = {}
   items = ip.split(",")
   for i in items:
     key, val = i.split('[')
     d[key] = int(val.strip(']'))
   return d


parsed = parse(ip)
print (parsed['LGAD'])

答案 2 :(得分:0)

import re

text = "ABC[5],DEF[3],GHF[1],GBM[1],NECU[1],KIR[1],LGAD[18]"
rx = r'LGAD\[(\d+)\]'

m = re.search(rx, text)
print(m.group(1))

答案 3 :(得分:0)

您可以考虑该字符串的格式一致性,从该字符串创建一个dict,然后使用单词作为关键字来访问所需的值:

string = "ABC[5],DEF[3],GHF[1],GBM[1],NECU[1],KIR[1],LGAD[18]" 
word = "LGAD"
stringDict = dict((el[:el.find('[')],int(el[el.find('[')+1:-1])) for el in string.split(','))
print(stringDict[word])

输出:

18

您也可以使用map函数:

stringDict = dict(map(lambda el: (el[:el.find('[')],int(el[el.find('[')+1:-1])), string.split(',')))