gpt4 book ai didi

python - 尝试创建函数以提取特殊字符之间的切片

转载 作者:行者123 更新时间:2023-12-04 03:56:56 24 4
gpt4 key购买 nike

我有一些我认为可以工作的代码,但它没有。特别是,我该如何处理文本中只有开始或结束短语的情况。请参阅下面的代码。谢谢!

import re
def extract(text, begin, end):
result1 = re.search(begin, text)
if result1 is None:
index1 = " "
else:
index1 = text.find(begin) + len(begin)
result2 = re.search(end, text)
if result2 is None:
index2 = " "
else:
index2 = text.find(end)
return text[index1:index2]

print(extract("Eat an <apple> each day", "<", ">"))

print(extract("Oh [/b] no", "[b]", "[/b]"))

#First case 按预期工作并打印“apple”。我期待“哦”为第二种情况打印,但它没有返回任何东西。为什么不,我该如何解决? enter image description here enter image description here

最佳答案

你真的不需要在这里使用正则表达式。事实上,您的问题部分是由于您使用了正则表达式。 [] 是正则表达式中的特殊字符,它本质上意味着“匹配列出的任何单个字符”在两个括号之间。因此,您的字符串将尝试匹配 b 开始和 /b 结束。我们可以在不使用正则表达式的情况下仅使用 .find 方法来执行此操作,如果找不到任何内容,该方法实际上会返回 -1

def extract(text, begin, end):
index1 = text.find(begin)
if index1 != -1:
index1 += len(begin)
# start next search at index1, or 0 if begin not found
index2 = text.find(end, index1 if index1 != -1 else 0)
print(index1, index2)
if index2 != -1:
# end string found!
return text[index1 if index1 != -1 else 0:index2]
elif index1 != -1:
# begin string found!
return text[index1:index2 if index2 != -1 else len(text)]

print(extract("Eat an <apple> each day", "<", ">"))
# "apple"
print(extract("Oh [/b] no", "[b]", "[/b]"))
# "Oh "
print(extract("Oh [b] no", "[b]", "[/b]"))
# " no"

关于python - 尝试创建函数以提取特殊字符之间的切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63707874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com