如何从左右两侧修剪字符串上的空白?
答案 0 :(得分:0)
Python在字符串上有lstrip
和rstrip
方法,分别从左侧和右侧修剪空白:
>>> ' 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
的空格替换为下划线(或您喜欢的任何字符)。