[英]split string using re and add integers in python
我有以下字符串
'100000 | ^ 104,500 | ^^ 0 ^ 0 ^ 0 ^ 0 ^ 0 ^ 0 ^ 0 ^ 0 | ^^^^^^^^^^^ 412824 | 103000 | 103000 | 103000 | 103000 ^^'
如何对|^^^^^^^^^
之后的最后5个整数求和,直到^^
被|
分隔|
。
我尝试了re.split('[|^^^^^^^^^]', string)
但它使用|^
定界符进行了拆分并返回列表。
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
使用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
这些字符在正则表达式中很特殊,需要转义。 试试这个:
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
您可以尝试此操作(但无需重新库)
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)
完全正则表达式的解决方案可以使用此正则表达式:
.+\\|\\^{9}|[\\^\\|]+
您可以使用此正则表达式进行拆分。 结果数组将包含一些空元素,但是,您可以在添加时轻松检查它们。
使用findall()和负前瞻:
sum( int(i) for i in re.findall(r"(?!.*\^{9})\d+",s))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.