我有以下字符串
'100000 | ^ 104,500 | ^^ 0 ^ 0 ^ 0 ^ 0 ^ 0 ^ 0 ^ 0 ^ 0 | ^^^^^^^^^^^ 412824 | 103000 | 103000 | 103000 | 103000 ^^'
如何对|^^^^^^^^^
之后的^^
为止的|
为止的最后5个整数求和。
我尝试了re.split('[|^^^^^^^^^]', string)
,但是它使用|^
分隔符分割并返回列表。
答案 0 :(得分:2)
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('|')))
answer:
824824
答案 1 :(得分:1)
使用re.search
#Lookbehind&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
答案 2 :(得分:1)
这些字符在正则表达式中很特殊,需要转义。试试这个:
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
答案 3 :(得分:1)
您可以尝试此操作(但不带re库)
a='100000|^104,500|^^0^0^0^0^0^0^0|^^^^^^^^^412824|103000|103000|103000|103000^^'
a=a.split('^'*9)
a=(a[1]).replace('^^','')
a=a.split('|')
s = 0
for i in a:
s += int(i)
print(s)
答案 4 :(得分:0)
完全正则表达式的解决方案可以使用此正则表达式:
.+\|\^{9}|[\^\|]+
您可以使用此正则表达式进行拆分。结果数组将包含一些空元素,但是,您可以在添加时轻松检查它们。
答案 5 :(得分:0)
具有findall()和否定前瞻:
sum( int(i) for i in re.findall(r"(?!.*\^{9})\d+",s))