从列表中直接位于“@”符号后面的字符串中提取数值

2024-06-28 19:10:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下的列表:*为了便于阅读,我将每个元素放在一个新的编号行上*

  • 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中执行此操作


Tags: 元素source列表dtatnovoexdatetaxable
2条回答

阅读python中的regex模块re

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

mylist = ['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 mylist]

for res in results:
    print(res)

尝试:

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']

相关问题 更多 >