用这些空格的数量替换右侧和左侧空格

时间:2017-03-29 03:38:53

标签: python

如何从左右两侧修剪字符串上的空白?

3 个答案:

答案 0 :(得分:0)

Python在字符串上有lstriprstrip方法,分别从左侧和右侧修剪空白:

>>> '   abc d  '.lstrip()
'abc d  '
>>> 'abc d  '.rstrip()
'abc d'

将此与len(s)相结合,为您提供字符串s的长度,您应该好好去!

答案 1 :(得分:0)

这就是你所要求的,但它并不漂亮。

>>> x = '___abc_d__'
>>> on_left = len(x) - len(x.lstrip('_'))
>>> on_right = len(x) - len(x.rstrip('_'))
>>> y = '({0}){1}({2})'.format(on_left, x.strip('_'), on_right)
>>> print(y)
(3)abc_d(2)

答案 2 :(得分:0)

单个正则表达式也可以。此表达式捕获所有前导空格,字符串内容的其余部分,直到尾随空格和尾随空格。然后它分别替换第一组(括号中),第二组和第三组(括号中)长度的那些。

import re

def replace(s):
    return '({}){}({})'.format(len(s.group(1)), s.group(2), len(s.group(3)))
    # or, with Python 3.6 f-strings:
    # return f'({len(s.group(1))}){s.group(2)}({len(s.group(3))})'

expression = re.compile(r'^( *)(.*?)( *)$')

结果:

>>> expression.sub(replace, '   abc d  ') #  becomes (3)abc d(2)
'(3)abc d(2)'
>>> expression.sub(replace, ' abc    ') # becomes (1)abc(4)
'(1)abc(4)'

请注意,这只会替换空格,而不是所有空白字符 - 而是使用\s。此外,您所需的输出显示长度周围的括号,而您的示例代码似乎没有尝试这样做。您可以轻松更改replace函数中的格式字符串。最后,下划线字符'_'与空格字符' '不同。我假设你的实际字符串有空格,你只使用下划线给我们一个可见的字符。再一次,您可以轻松地更改此行为,这次是将expression的空格替换为下划线(或您喜欢的任何字符)。