在Python中从字符串中提取字段和值

时间:2016-07-19 14:45:00

标签: python regex

我试图提取字段名称和值。来自包含字段和值的字符串,如下所示:

/location=(7966, 8580, 1) /station=NY /comment=Protein RadB n=1 Tax=M (SB / ATCC) RepID=A6USB2_METV
  • 每个字符串可以包含不同数量的字段

  • 字段名称将始终包含在' /'之间。和' ='

  • 这些值可以包含' /'和空白但不是' ='

预期结果如下:

['location','(7966, 8580, 1)','station','NY','comment','Protein RadB n=1 Tax=M (SB / ATCC) RepID=A6USB2_METV']

到目前为止,我已经能够使用以下方法提取字段名称:

>> re.findall(r"\/([a-z]*?)\=",string)
['location', 'station', 'comment']

我尝试使用否定?!但没有成功。

提前致谢!

2 个答案:

答案 0 :(得分:3)

您可以使用re.split()首先拆分“key = value”对,然后在第一次出现Date.prototype.setDate时进行常规str.split()拆分:

var date = new Date;

date.setDate(date.getDate() + 30);
console.log(new Date, date);

答案 1 :(得分:1)

只需使用re.split()

即可
>>> string
'/location=(7966, 8580, 1) /station=NY /comment=Protein RadB n=1 Tax=M (SB / ATCC) RepID=A6USB2_METV'
>>> import re
>>> pattern = re.compile(r'\s*/([a-z]+)=')
>>> pattern.split(string)[1:]
['location', '(7966, 8580, 1)', 'station', 'NY', 'comment', 'Protein RadB n=1 Tax=M (SB / ATCC) RepID=A6USB2_METV']

re.split(pattern,string,maxsplit = 0,flags = 0)

按照模式的出现拆分字符串。如果在模式中使用捕获括号,则模式中所有组的文本也将作为结果列表的一部分返回