我试图提取字段名称和值。来自包含字段和值的字符串,如下所示:
/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']
我尝试使用否定?!
但没有成功。
提前致谢!
答案 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)
按照模式的出现拆分字符串。如果在模式中使用捕获括号,则模式中所有组的文本也将作为结果列表的一部分返回。