列表中字符串处理问题
各位大神好有下面这样一个字符串,小弟需要将其中的'1+1+1' ,’2+2+2‘这种取出来然后分别求和再相加,请问大神们怎么处理好呢
listA = ('1+1+1',None,'2+2+2 (4A4B)',None,None,'2+2+2 (64AB)')
这个列表中的字符串有这样的属性: 如果不是None的话,一定是 X+Y+Z 的这种形式(可能后面会跟有AB 这种),我现在要做的就是把不为None 的字符串提取出来,再计算各自的结果(如 1+1+1= 3)
希望大神们不宁赐教
import re
listA = ('1+1+1',None,'2+2+2 (4A4B)',None,None,'2+2+2 (64AB)')
print(list(map(lambda y:eval(re.sub('\(.*\)','',y)),filter(lambda x:x!=None,listA))))
--------------------------
listA = ('1+1+1', None, '2+2+2 (4A4B)', None, None, '2+2+2 (64AB)')
for i in listA:
if i != None:
jisuan = (i.split(' '))
a = jisuan.split('+')
b = jisuan.split('+')
c = jisuan.split('+')
result = int(a) + int(b) + int(c)
print(f'{a}+{b}+{c}={result}')
1+1+1=3
2+2+2=6
2+2+2=6
import re
listA = ['1+1+1',None,'2+2+2 (4A4B)',None,None,'2+2+2 (64AB)']
for each in listA:
if each:
if '('in each:
each=re.findall(r'(.*?)\(',each)
print("%s的计算结果是:"%each,eval(each)) import re
listA = ('1+1+1', None, '2+2+2 (4A4B)', None, None, '2+2+2 (64AB)')
zj = (re.sub(r'\s*\(.*\)', '', s) for s in listA if s)
for ep in zj:
print('%s=%s' %(ep, eval(ep))) 疾风怪盗 发表于 2020-9-25 17:11
1+1+1=3
2+2+2=6
2+2+2=6
老哥,你这个相对好理解些,方便加个注释啥的不? 我刚起步,5行开始有点疑惑。。 疾风怪盗 发表于 2020-9-25 17:11
1+1+1=3
2+2+2=6
2+2+2=6
哦哦 我明白了
第四行的split 是为了去除引号后,取第0个字符串(其实只有一个字符串),后面三行分别是去除+后取第0,1,2个字符串,然后相加,不知道我的理解对不对 weiyideid823 发表于 2020-9-27 16:10
哦哦 我明白了
第四行的split 是为了去除引号后,取第0个字符串(其实只有一个字符串),后面三行分别是 ...
第四行是因为元素'2+2+2 (4A4B)'里面有空格,要的是空格前面的,所以以空格为分割,取出计算公式
然后再以加号为分割分别取数字出来
其实4楼给的内置函数eval()更方便,可以把'2+2+2'直接运算了,也不需要再分割了
页:
[1]