gpt4 book ai didi

python - strip 意外删除 '_'

转载 作者:太空宇宙 更新时间:2023-11-03 13:10:22 25 4
gpt4 key购买 nike

>>> x = 'abc_cde_fgh'
>>> x.strip('abc_cde')
'fgh'

_fgh 是预期的。

如何理解这个结果?

最佳答案

Strip 从子字符串的任一端删除它找到的任何字符:它不会删除尾随或前导单词。

这个例子很好地演示了这一点:

x.strip('ab_ch')
'de_fg'

由于字符“a”、“b”、“c”、“h”和“_”是remove case,所以前导的“abc_c”都被删除了。其他字符未被删除。

如果您想删除开头或结尾的单词,我建议您使用restartswith/endswith

def rstrip_word(str, word):
if str.endswith(word):
return str[:-len(word)]
return str

def lstrip_word(str, word):
if str.startswith(word):
return str[len(word):]
return str

def strip_word(str, word):
return rstrip_word(lstrip_word(str, word), word)

删除多个单词

从字符串中删除多个单词的一个非常简单的实现(一个贪心的实现)可以按如下方式完成:

def rstrip_word(str, *words):
for word in words:
if str.endswith(word):
return str[:-len(word)]
return str

def lstrip_word(str, *words):
for word in words:
if str.startswith(word):
return str[len(word):]
return str

def strip_word(str, *words):
return rstrip_word(lstrip_word(str, *words), *words)

请注意这个算法是贪婪的,它会找到第一个可能的例子然后返回:它可能不像你期望的那样表现。找到最大长度匹配(虽然不是太棘手)有点复杂。

>>> strip_word(x, "abc", "adc_")
'_cde_fgh'

关于python - strip 意外删除 '_',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44961932/

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