2024-04-25 19:52:49 发布
网友
我最近意识到,Python的strip内置函数(它的子函数rstrip和lstrip)并没有把给它的字符串当作一个有序的字符序列来处理,而是把它当作一种字符的“存储库”:
strip
rstrip
lstrip
>>> s = 'abcfooabc' >>> s.strip('abc') 'foo' >>> s.strip('cba') 'foo' >>> s.strip('acb') 'foo'
等等。
有没有办法从给定的字符串中去掉有序的子字符串,以便在上面的示例中输出不同?
这个呢: s.split('abc')。
s.split('abc')
返回:['', 'foo', '']。
['', 'foo', '']
因此,我们可以将其更改为:
[i for i in s.split('abc') if i != '']。如果你只想要'foo',而不是['foo'],你可以这样做:[i for i in s.split('abc') if i != ''][0]。
[i for i in s.split('abc') if i != '']
'foo'
['foo']
[i for i in s.split('abc') if i != ''][0]
一起:
def splitString(s, delimiter): return [i for i in s.split(delimiter) if i != ''][0]
我刚开始的时候也有同样的问题。
改为尝试str.replace?
>>> s = 'abcfooabc' >>> s.replace("abc", "") 0: 'foo' >>> s.replace("cba", "") 1: 'abcfooabc' >>> s.replace("acb", "") 2: 'abcfooabc'
我不知道什么是内置的,不,但很简单:
def strip_string(string, to_strip): if to_strip: while string.startswith(to_strip): string = string[len(to_strip):] while string.endswith(to_strip): string = string[:-len(to_strip)] return string
这个呢:
s.split('abc')
。返回:
['', 'foo', '']
。因此,我们可以将其更改为:
[i for i in s.split('abc') if i != '']
。如果你只想要'foo'
,而不是['foo']
,你可以这样做:[i for i in s.split('abc') if i != ''][0]
。一起:
我刚开始的时候也有同样的问题。
改为尝试str.replace?
我不知道什么是内置的,不,但很简单:
相关问题 更多 >
编程相关推荐