在字符串中的子字符串中查找值?
Finding values in a substring within a string?
我正在创建一个简单的 Python 计算器,它使用运算顺序进行简单的数学运算,并添加了平方根和整数除法功能。这个概念是用户可以将他们想要平方根的值包含在 sqr()
函数中(例如,sqr(25)
等于 5)。
问题是,我无法从等式字符串中提取该值。这是它应该做什么的伪代码:
b = 'sqr(25)+5*3' # equation
# My pseudo-code:
# 1. Identify use of sqr()
# 2. Pull 'sqr(25)' out to be solved
# 3. Pull value (25) out and solve it with math.sqrt()
# 4. Replace 'sqr(25)' with the solved value (5)
#
# b should now be equal to:
# '5+5*3'
我无法从 sqr()
中提取值并将其放回正确的位置。我尝试在网上查找,但这似乎是一个晦涩难懂的问题。
您可以使用 re
模块中的 re.sub
来解决您的问题。首先,让我们定义一个简单的辅助函数,它接收一个数字字符串并计算平方根,然后 returns 一个字符串:
def str_2_sqrt(s):
return str(math.sqrt(int(s)))
现在对于困难的部分,我们将使用 re.sub
,以及调用 str_2_sqrt
[的自定义 lambda 函数=24=] 并将结果放回字符串中:
>>> re.sub(r'sqr\((\d+)\)', lambda x: str_2_sqrt(x.group(1)), b)
5.0+5*3
b = 'sqr(25)+5*3' # equation
import math
def f(s):
s1=s.replace('sqr','')
s2=s1.replace(s1.split(')')[0][1:],str(int(math.sqrt(int(s1.split(')')[0][1:])))))
return s2.replace(')','').replace('(','')
print(f(b))
我正在创建一个简单的 Python 计算器,它使用运算顺序进行简单的数学运算,并添加了平方根和整数除法功能。这个概念是用户可以将他们想要平方根的值包含在 sqr()
函数中(例如,sqr(25)
等于 5)。
问题是,我无法从等式字符串中提取该值。这是它应该做什么的伪代码:
b = 'sqr(25)+5*3' # equation
# My pseudo-code:
# 1. Identify use of sqr()
# 2. Pull 'sqr(25)' out to be solved
# 3. Pull value (25) out and solve it with math.sqrt()
# 4. Replace 'sqr(25)' with the solved value (5)
#
# b should now be equal to:
# '5+5*3'
我无法从 sqr()
中提取值并将其放回正确的位置。我尝试在网上查找,但这似乎是一个晦涩难懂的问题。
您可以使用 re
模块中的 re.sub
来解决您的问题。首先,让我们定义一个简单的辅助函数,它接收一个数字字符串并计算平方根,然后 returns 一个字符串:
def str_2_sqrt(s):
return str(math.sqrt(int(s)))
现在对于困难的部分,我们将使用 re.sub
,以及调用 str_2_sqrt
[的自定义 lambda 函数=24=] 并将结果放回字符串中:
>>> re.sub(r'sqr\((\d+)\)', lambda x: str_2_sqrt(x.group(1)), b)
5.0+5*3
b = 'sqr(25)+5*3' # equation
import math
def f(s):
s1=s.replace('sqr','')
s2=s1.replace(s1.split(')')[0][1:],str(int(math.sqrt(int(s1.split(')')[0][1:])))))
return s2.replace(')','').replace('(','')
print(f(b))