无法计算替换某些符号的两个值

时间:2018-08-12 08:00:09

标签: python string python-3.x str-replace

如何在两个值之间添加替换/的值?我尝试使用item.replace("/","+"),但只用+符号代替了/,而没有执行其他操作。例如,如果我尝试对2/1.5-3/-4.5进行逻辑处理,则会得到2+1.5-3+-4.5

  

我的目的是在两个值之间添加替换/的值并将其分为2,这样,如果我尝试对({ {1}}和1.875)。

这是我到目前为止的尝试:

-3.75

我现在所拥有的:

2/1.5

预期的输出(将用-3/-4.5代替for item in ['2/1.5','-3/-4.5']: print(item.replace("/","+")) 的两个值相加,然后将结果除以二):

2+1.5
-3+-4.5

6 个答案:

答案 0 :(得分:3)

由于/只是一个分隔符,因此您实际上不需要将其替换为+,而是将其与split一起使用,然后对各部分进行汇总:

for item in ['2/1.5', '-3/-4.5']:
    result = sum(map(float, item.split('/'))) / 2
    print(result)

或更广义的形式:

from statistics import mean

for item in ['2/1.5', '-3/-4.5']:
    result = mean(map(float, item.split('/')))
    print(result)

答案 1 :(得分:1)

您可以使用eval来做到这一点:

for item in ['2/1.5','-3/-4.5']:
    print((eval(item.replace("/","+")))/2)

答案 2 :(得分:1)

我的答案与其他答案没有什么不同,除了我不明白为什么每个人都使用列表。这里不需要列表,因为它不会被更改,tuple很好并且效率更高:

for item in '2/1.5','-3/-4.5':            # Don't need a list here
    num1, num2 = item.split('/')
    print((float(num1) + float(num2)) / 2)

答案 3 :(得分:1)

@daniel的答案的进一步阐述:

[sum(map(float, item.split('/'))) / 2 for item in ('2/1.5','-3/-4.5')]

结果:

[1.75, -3.75]

答案 4 :(得分:0)

您可以这样做(将字符串分成两个浮点数):

for item in ['2/1.5','-3/-4.5']:
    itemArray = item.split("/")
    itemResult = float(itemArray[0]) + float(itemArray[1])
    print(itemResult/2)

答案 5 :(得分:-1)

from ast import literal_eval
l=['2/1.5','-3/-4.5']
print([literal_eval(i.replace('/','+'))/2 for i in l])