【发布时间】:2019-11-02 02:58:16
【问题描述】:
我的问题类似,但与以下不同:
How do I remove a substring from the end of a string in Python?
假设我们有:
input = "baabbbbb_xx_ba_xxx_abbbbbba"
我们希望保留除末尾的 ba 和开头的 ba 之外的所有内容。
1) 直接strip() 失败
strip 将字符串视为一个集合。也就是说,strip 将删除以任意顺序出现的字母 a 和 b。我们只想删除字符 ba,如果它们以 的确切顺序出现。此外,与strip 不同,我们只希望从字符串末尾删除零个或一个副本。 "x\n\n\n\n".strip() 将删除许多新行,而不仅仅是一个。
input = "baabbbbb_xx_ba_xxx_abbbbbba"
output = input.strip("ba")
print(output)
prints "_xx_ba_xxx_"
2) 直接replace() 失败
input = "xx_ba_xxx"
output = input.replace("ba", "")
print(output)
# prints `xx__xxx`
不酷;我们只想从字符串的开头和结尾删除序列“ba”,而不是中间。
3) 没关系
input = "baabbbbb_xx_ba_xxx_abbbbbba"
output = "ba".join(input.rsplit("ba", 1))
print(output)
# output==input
最后说明
解决方案必须是通用的:接受任意两个输入字符串的函数,其中一个可能是“ba”。不需要的前导和尾随字符串可能包含“.”、“*”和其他不适合在正则表达式中使用的字符。
【问题讨论】:
标签: python python-3.x string