从列表中的字符串中提取紧接在“ @”符号之后的数值

问题描述 投票:-2回答:3

我有一个看起来像这样的列表:*为了便于阅读,我将每个元素放在新的编号行上*

 NOVO NORDISK A/S    216757.000 SHS @ 5.15000000 EXDTE-22MAR19 PAYDTE-26MAR19 TAXABLE RECLAIMABLE TAXED AT .270000%,
 NOVO NORDISK A/S    205395.000 SHS @ 3.00000000 EXDTE-16AUG19 PAYDTE-20AUG19 TAXABLE RECLAIMABLE TAXED AT .270000%,
 NOVO NORDISK A/S    TAX RECLAIM PAID 79000.000 EX-DT:20MAR15 PY-DT:24MAR15 CURRENCY TIP # 1150790014348SIEMENS AG    89789.000 SHS @ 3.80000000 EXDATE-31JAN19 PAYDATE-04FEB19 TAXABLE RECLAIMABLE TAXED AT .263750%,
 UNILEVER NV    171208.000 SHS @ 0.38720000 EXDATE-14FEB19 PAYDATE-20MAR19 TAXABLE W/H @ SOURCE TAXED AT .150000%,
 ROYAL DUTCH SHELL PLC A SHS   568644.000 SHS @ 0.41810000 EXDTE-14FEB19 PAYDTE-25MAR19 TAXABLE W/H @ SOURCE TAXED AT .150000%,

我正在尝试编写一个脚本,该脚本将提取第一个“ @”符号后的数字。我将如何处理

python regex list extract
3个回答
3
投票
在python中阅读正则表达式模块。

import re l = '''NOVO NORDISK A/S 216757.000 SHS @ 5.15000000 EXDTE-22MAR19 PAYDTE-26MAR19 TAXABLE RECLAIMABLE TAXED AT .270000%, NOVO NORDISK A/S 205395.000 SHS @ 3.00000000 EXDTE-16AUG19 PAYDTE-20AUG19 TAXABLE RECLAIMABLE TAXED AT .270000%, NOVO NORDISK A/S TAX RECLAIM PAID 79000.000 EX-DT:20MAR15 PY-DT:24MAR15 CURRENCY TIP # 1150790014348SIEMENS AG 89789.000 SHS @ 3.80000000 EXDATE-31JAN19 PAYDATE-04FEB19 TAXABLE RECLAIMABLE TAXED AT .263750%, UNILEVER NV 171208.000 SHS @ 0.38720000 EXDATE-14FEB19 PAYDATE-20MAR19 TAXABLE W/H @ SOURCE TAXED AT .150000%, ROYAL DUTCH SHELL PLC A SHS 568644.000 SHS @ 0.41810000 EXDTE-14FEB19 PAYDTE-25MAR19 TAXABLE W/H @ SOURCE TAXED AT .150000%,''' print(re.findall(r'(?<=@)\s*\d*[.]\d*',l))

编辑:我没有意识到您在列表中有子字符串,因此这里是一个。

import re List = ['NOVO NORDISK A/S 216757.000 SHS @ 5.15000000 EXDTE-22MAR19 PAYDTE-26MAR19 TAXABLE RECLAIMABLE TAXED AT .270000%', 'NOVO NORDISK A/S 205395.000 SHS @ 3.00000000 EXDTE-16AUG19 PAYDTE-20AUG19 TAXABLE RECLAIMABLE TAXED AT .270000%', 'NOVO NORDISK A/S TAX RECLAIM PAID 79000.000 EX-DT:20MAR15 PY-DT:24MAR15 CURRENCY TIP # 1150790014348SIEMENS AG 89789.000 SHS @ 3.80000000 EXDATE-31JAN19 PAYDATE-04FEB19 TAXABLE RECLAIMABLE TAXED AT .263750%', 'UNILEVER NV 171208.000 SHS @ 0.38720000 EXDATE-14FEB19 PAYDATE-20MAR19 TAXABLE W/H @ SOURCE TAXED AT .150000%', 'ROYAL DUTCH SHELL PLC A SHS 568644.000 SHS @ 0.41810000 EXDTE-14FEB19 PAYDTE-25MAR19 TAXABLE W/H @ SOURCE TAXED AT .150000%'] Results = [re.search(r'(?<=@)\s*\d*[.]\d*',string).group() for string in List] for res in Results: print(res)


1
投票
尝试:

my_list = ['NOVO NORDISK A/S 216757.000 SHS @ 5.15000000 EXDTE-22MAR19 PAYDTE-26MAR19 TAXABLE RECLAIMABLE TAXED AT .270000%', 'NOVO NORDISK A/S 205395.000 SHS @ 3.00000000 EXDTE-16AUG19 PAYDTE-20AUG19 TAXABLE RECLAIMABLE TAXED AT .270000%'] result = [re.findall(r'\@ (\d+\.\d+)',s)[0] for s in my_list] result ['5.15000000', '3.00000000']


0
投票
查看string.find()和正则表达式。
© www.soinside.com 2019 - 2024. All rights reserved.