2017-08-03 27 views
-1

我有一个字符串,它看起来像这样:的Python:在字符串的开头保持空白

old_string = '  Some_text' 

我想写一个新的字符串,但我想保持相同的空白开始。 有没有在Python的方式,我可以保持这个空白? 白色空格可能包含空格或制表符,但制表符或空格的确切数量未知。 我认为这可以使用正则表达式来完成,但我不确定是否有办法。而且,由于字符串中的文本并不总是相同的,我不能使用

new_string = old_string.replace('Some_text','new_text') 

任何想法会更受欢迎。

+1

@Rachitkapadia我不认为它是重复的。 OP需要一个新的字符串,它与旧的空白字符串(空格或制表符)完全相同。这与计数不一样。 – jdehesa

+0

重复https://stackoverflow.com/q/2268532/2301450 – vaultah

回答

0

你可以这样做:

new_string = old_string[:-len(old_string.lstrip())] + 'new text' 

或者如果你喜欢str.format

new_string = '{}new text'.format(old_string[:-len(old_string.lstrip())]) 
0

计算在使用lstrip时会删除多少个字符;

str = '  Some_text' 
whitespace = len(str) - len(str.lstrip()) 
print(whitespace) 

输出;

6 
0

您可以使用itertools.takewhile()获得领先的空白字符:

>>> from itertools import takewhile 
>>> old_string = '  Some_text' 
>>> whitespace = list(takewhile(str.isspace, old_string)) 
>>> "".join(whitespace) 
'  ' 
>>> len(whitespace) 
6 

要得到您可以使用的字符串的其余部分itertools.dropwhile()

>>> "".join(dropwhile(str.isspace, old_string))  
'Some_text' 
+0

您可以将问题作为重复关闭,而不是提供几乎相同的答案。 https://stackoverflow.com/a/2268627/2301450 – vaultah