如何从Python中的字符串数组的偏移量中去除前导空格?

问题描述:

我是Python的新手,但我有一个简单的问题。我知道我可以使用lstrip()从字符串中去掉前导空格/制表符。但可以说我有一个字符串str:如何从Python中的字符串数组的偏移量中去除前导空格?

str = '+  12 3' 

我想要的结果是

'+12 3' 

我想做到这一点通过调用lstrip原始字符串的子:

str[1:] = str[1:].lstrip() 

但我得到以下错误:

Traceback (most recent call last): 
File "ex.py", line 51, in <module> 
print(Solution().myAtoi(' 12 3')) 
File "ex.py", line 35, in myAtoi 
str[x:] = str[x:].lstrip() 
TypeError: 'str' object does not support item assignment 

有没有办法实现这个使用lstrip()?或者我应该考虑另一种做法呢?

根据记录,这仅仅是一个实践本文给出了问题,我试图把它写在Python自学 - 有些朋友说其值得学习

谢谢! :d

+3

由于您是新手,您应该知道Python字符串是不可变的,因此是错误。 –

您可以在字符串+之前的部分叫str.lstrip,然后连接第一字符回:

>>> s = '+  12 3' 
>>> s = s[0] + s[1:].lstrip() 
>>> s 
'+12 3' 
+0

恭喜10k! –

+0

@cᴏʟᴅsᴘᴇᴇᴅ对不起,这么晚回来。去睡觉了。虽然早上这是一个不错的惊喜;-)谢谢! –

您可以使用正则表达式:

import re 

data = re.sub("(?<=\+)\s+", '', '+  12 3') 

输出:

'+12 3' 

说明:

(?<=\+) #is a positive look-behind 
\s+ #will match all occurrences of white space unit a different character is spotted. 
+0

好的,我正在准备为我的答案添加正则表达式解决方案,但这些更清洁。 +1 –

str是不可变的类型。你不能改变现有的字符串到位。你可以建立一个新的字符串,并重新分配变量句柄(按名称)。 Christian已经给了你建立你想要的字符串的细节。