对于我尝试创建的函数,有两个主要的注意规则:
- No use of modules are allowed
- The substring must be obtained by a 'begin' and 'end' string.
目的是获取一个基字符串、开始字符串和结束字符串。然后,删除这些字符串之间的所有文本。这必须针对每次事件,而不仅仅是第一次
例如: 基础是“是”和“否”“是”和“否”, 开始是“是”, 结束语是“否”
输出:“是的”
到目前为止,这是我的代码,但是它只适用于第一次出现。递归实现是否理想
def extractFromString(baseStr, extStr1, extStr2):
if extStr1 and extStr2 in baseStr:
# >1. Get start/end indices
start = baseStr.find(extStr1) + len(extStr1)
end = baseStr.find(extStr2)
# >2. Get first/second halves
firstHalf = baseStr[:start]
secondHalf = baseStr[end:]
# >3. Combine and return
result = firstHalf + secondHalf
return result
您可以在每次出现extStr2时首先拆分基本字符串,然后在出现extStr1时拆分它
我没有运行这个,但这可能适用于你的情况
提供以下输出:
这是通过拆分字符串并递归调用函数来实现的。 检查最后一个例子,如果这是您想要的行为
你的
if
有问题if extStr1 and extStr2 in baseStr
不会做你认为它会做的事。您需要检查每个子字符串是否分别位于基本字符串中如if extStr1 in baseStr and extStr2 in baseStr
我建议不要使用循环或递归,而是使用正则表达式和^{}
首先,我们构建一个正则表达式来匹配
yes
,然后尽可能少地匹配任何字符,然后no
:yes.*?no
{a2}记住^{} 输入字符串,以防它们包含特殊字符
接下来,我们用
yesno
替换所有出现的这个正则表达式用一堆输入运行这个
相关问题 更多 >
编程相关推荐