获取数字字符串Python

2024-04-27 08:48:03 发布

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

有人能帮我吗?你知道吗

我有这个字符串:

Tip:1-Cli:337|Neg:695|Pro:7558|Nom:802|Esq:1|Rub:None|Con:None|Emp:None|Com:1,Tip:1-Cli:337|Neg:695|Pro:7558|Nom:850|Esq:1|Rub:None|Con:None|Emp:None|Com:1,Tip:1-Cli:337|Neg:695|Pro:7558|Nom:1627|Esq:1|Rub:None|Con:None|Emp:None|Com:1

我试着得到数字:“7558", "7558", "7558" y "802", "850", "1627"

这是我的密码:

    for y in str(nvaCadena):
         o_pro = nvaCadena.index('Pro:') + 4         
         f_pro = nvaCadena.index('|Nom:')            
         p = nvaCadena[o_pro: f_pro]

         o_nom = nvaCadena.index('|Nom:') + 5
         f_nom = nvaCadena.index('|Esq:')
         n = nvaCadena[o_nom:f_nom]

但我得到:7558 - 802 7558 - 802 7558 - 802

我想要:7558 - 802 7558 - 850 7558 - 1627

请帮帮我!你知道吗


Tags: comnoneindexcliconnomprotip
2条回答

我假设nvaCadena是一个列表。不应将其转换为带有str(nvaCadena)的字符串。你知道吗

接下来,应该使用循环变量y,而不是忽略它。你知道吗

您可以(也可能应该)使用正则表达式:

numbers = re.findall(r'Pro:(\d+)\|Nom:(\d+)',s)
# [('7558', '802'), ('7558', '850'), ('7558', '1627')]
" ".join((x + " - " + y) for x,y in numbers)
# '7558 - 802 7558 - 850 7558 - 1627'

相关问题 更多 >