返回字符串的剥离空格的函数



Python 中是否有一个现有的函数可以像 .strip()/.lstrip()/.rstrip() 那样工作,而是返回剥离的空格而不是生成的剥离字符串?

即:

test_str = 'nttext goes here'
test_str.lstrip() # yields 'text goes here'
test_str.lwhite() # yields 'nt'

其中.white().lwhite().rwhite()是我希望存在的函数。否则,我将不得不使用正则表达式和捕获的组:

^(s*).*(s*)$    for .white()
^(s*)            for .lwhite()
(s*)$            for .rwhite()

为了给出一个更好的例子,Python 有.strip()方法,可以删除给定字符串开头和结尾的空格并返回剥离的字符串。与 Python 的 .lstrip().rstrip() 方法相同,分别是开始和结束。

我正在寻找一种方法来返回从字符串末端剥离的空格。因此,对于如下所示的字符串...

sample = 'nt this stringt is n ta samplet!n'

。我希望'nt '返回为起始版本,'n'返回为结束版本,或在为完整版本返回的列表中两者兼而有之。

谢谢大家!

哎呀,我刚刚意识到你的意思是剥离而不是拆分,所以这是一个itertools.takewhile解决方案:

from itertools import takewhile
def lstripped(s):
    return ''.join(takewhile(str.isspace, s))
def rstripped(s):
    return ''.join(reversed(tuple(takewhile(str.isspace, reversed(s)))))
def stripped(s):
    return lstripped(s), rstripped(s)

itertools.takewhile的填充代码如下:

def takewhile(predicate, iterable):
    # takewhile(lambda x: x<5, [1,4,6,4,1]) --> 1 4
    for x in iterable:
        if predicate(x):
            yield x
        else:
            break

我可能从字面上理解你的话 - 但如果你只想在字符串中获取空格,那么列表理解不是要走的路吗?

In [112]: x
Out[112]: 'nttext goes here'
In [113]: ''.join([i for i in x if not i.isalnum()]).replace(" ",'')
Out[113]: 'nt'

相关内容

最新更新