以下是我从网上提取的一行:
AIG 30美元AIG是一家在纽约证券交易所上市的国际知名保险公司。需要一段时间。手动自动激活3 0.0510,0.0500,0.0300 [提取]
我想通过解析文本并检索相关数据来创建5个单独的变量。但是,我真的不明白REGEX文档!任何人都可以通过这个例子指导我如何正确地做到这一点吗?
名称= AIG
CurrentPrice = $ 30
状态=有效
World_Ranking = 3
历史= 0.0510,0.0500,0.0300
答案 0 :(得分:1)
不确定你想在这里实现什么。没有必要使用正则表达式,您可以使用str.split
:
>>> str = "AIG $30 AIG is an international renowned insurance company listed on the NYSE. A period is required. Manual Auto Active 3 0.0510, 0.0500, 0.0300 [EXTRACT]"
>>> list = str.split()
>>> dict = { "Name": list[0], "CurrentPrice": list[1], "Status": list[19], "WorldRanking": list[20], "History": ' '.join((list[21], list[22], list[23])) }
#output
>>> dict
{'Status': 'Active', 'CurrentPrice': '$30', 'Name': 'AIG', 'WorldRanking': '3', 'History': '0.0510, 0.0500, 0.0300'}
您可能希望将其更改为list[19]
而不是依赖于公司的说明长度,而不是使用list[-n]
等。像那样:
>>> history = ' '.join(list[-4:-1])
>>> history
'0.0510, 0.0500, 0.0300'
对于浮动历史索引,可以更容易使用re
:
>>> import re
>>> history = re.findall("\d\.\d{4}", str)
>>> ['0.0510', '0.0500', '0.0300']
为了识别状态,您可以获取历史值的索引,然后减去一个:
>>> [ i for i, substr in enumerate(list) if re.match("\d\.\d{4}", substr) ]
[21, 22, 23]
>>> list[21:24]
['0.0510,', '0.0500,', '0.0300,']
>>> status = list[20]
>>> status
'3'