在python中使用re拆分字符串并添加整数

2024-04-23 16:22:56 发布

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

我有以下字符串

'100000|^104,500|^^0^0^0^0^0^0^0|^^^^^^^^^412824|103000|103000|103000|103000^^'

如何对|^^^^^^^^^之后的最后5个整数求和,直到^^|分隔。你知道吗

我试过re.split('[|^^^^^^^^^]', string),但它使用|^分隔符进行拆分并返回list。你知道吗


Tags: 字符串restring整数listsplit分隔符
3条回答
import re
string = '100000|^104,500|^^0^0^0^0^0^0^0|^^^^^^^^^412824|103000|103000|103000|103000^^'    
answer = sum(map(int, re.search(r'\^{9}(.+)\^\^', string).group(1).split('|')))

回答:

824824

这些字符在正则表达式中是特殊的,需要转义。试试这个:

import re

s = '100000|^104,500|^^0^0^0^0^0^0^0|^^^^^^^^^412824|103000|103000|103000|103000^^'
nums = re.split(r'\|\^{9}', s)[1]
# Find all integers and sum
total = sum(map(int, re.findall(r'\d+', nums)))
print(total)

输出:

824824

使用re.search#lookback&Lookahead

演示:

import re
s = '100000|^104,500|^^0^0^0^0^0^0^0|^^^^^^^^^412824|103000|103000|103000|103000^^'
d = re.search(r"(?<=\^{9}).*?(?=\^{2})", s)
if d:
    print( sum(map(int, d.group().split("|"))) )

输出:

824824

相关问题 更多 >