删除Python字符串中的空格
一般的问题是从python字符串中删除所有额外的空格,以便每个单词之间只有一个空格,而字符串的开头或结尾没有空格 比如说,, “Hello to the world”将返回为“Hello to the world” 我们不允许使用split命令,或者除了基本字符串操作符(长度和连接)和if和while命令之外的任何命令 我编写的程序删除了字符串开头的空格以及单词之间的额外空格,但是,如果在输入字符串的最后一个单词后面有一个空格,程序将返回一个错误“索引[I]超出范围” 这是我的节目:删除Python字符串中的空格,python,Python,一般的问题是从python字符串中删除所有额外的空格,以便每个单词之间只有一个空格,而字符串的开头或结尾没有空格 比如说,, “Hello to the world”将返回为“Hello to the world” 我们不允许使用split命令,或者除了基本字符串操作符(长度和连接)和if和while命令之外的任何命令 我编写的程序删除了字符串开头的空格以及单词之间的额外空格,但是,如果在输入字符串的最后一个单词后面有一个空格,程序将返回一个错误“索引[I]超出范围” 这是我的节目: def c
def cleanstring (s):
i=0
while s[i]==' ':
i=i+1
s=s[i:len(s)]
i=0
while i<len(s):
if s[i]!=' ':
i=i+1
else:
if i<len(s) and s[i]==' ':
i=i+1
if s[i]==' ' and i+1<len(s):
s=s[0:i]+s[i+1:len(s)]
i=0
return(s)
def清洗字符串:
i=0
而s[i]=='':
i=i+1
s=s[i:len(s)]
i=0
当i时,您需要在另一个位置检查i是否在范围内。试一试:
def cleanstring(s):
i=0
while s[i]==' ':
i=i+1
s=s[i:len(s)]
i=0
while i<len(s):
if s[i]==' ':
if (i+1)<len(s) and s[i+1]==' ':
s=s[0:i]+s[i+1:len(s)]
else:
i=i+1
else:
i=i+1
if s[len(s)-1]==' ':
s=s[0:len(s)-1]
return(s)
def清洗字符串:
i=0
而s[i]=='':
i=i+1
s=s[i:len(s)]
i=0
当i时,您需要在另一个位置检查i是否在范围内。试一试:
def cleanstring(s):
i=0
while s[i]==' ':
i=i+1
s=s[i:len(s)]
i=0
while i<len(s):
if s[i]==' ':
if (i+1)<len(s) and s[i+1]==' ':
s=s[0:i]+s[i+1:len(s)]
else:
i=i+1
else:
i=i+1
if s[len(s)-1]==' ':
s=s[0:len(s)-1]
return(s)
def清洗字符串:
i=0
而s[i]=='':
i=i+1
s=s[i:len(s)]
i=0
而我实际上有一个简单而聪明的解决方法。改变
if s[i]==' ' and i+1<len(s):
如果s[i]=''和i+1实际上有一个简单而聪明的解决方法。改变
if s[i]==' ' and i+1<len(s):
如果s[i]==''和i+1这是您的实现结构,以及所需的更改:
def cleanstring (s):
i=0
while s[i]==' ':
i=i+1
s=s[i:len(s)]
i=0
while i<len(s):
if s[i]!=' ':
i=i+1
else:
if i<len(s) and s[i]==' ':
i=i+1
if i<len(s) and s[i]==' ':
s=s[0:i]+s[i+1:len(s)]
i=0
if s[-1] == ' ':
s = s[:-1]
return(s)
享受。这是您的实现结构,包括所需的更改:
def cleanstring (s):
i=0
while s[i]==' ':
i=i+1
s=s[i:len(s)]
i=0
while i<len(s):
if s[i]!=' ':
i=i+1
else:
if i<len(s) and s[i]==' ':
i=i+1
if i<len(s) and s[i]==' ':
s=s[0:i]+s[i+1:len(s)]
i=0
if s[-1] == ' ':
s = s[:-1]
return(s)
享受吧。这似乎很管用。
过来看。
repr()只给字符串加引号,以便查看单词前后的实际空格数
def cleanstring (s):
hit_letter = False
space_counter = 0
tmp = list()
for letter in s:
if letter.isalpha():
space_counter = 0
hit_letter = True
tmp.append(letter)
print letter
elif hit_letter:
space_counter += 1
if space_counter < 2:
tmp.append(letter)
return ''.join(tmp[:-1])
print repr(cleanstring(' Hi to the world '))
def清洗字符串:
击中字母=错误
空间计数器=0
tmp=list()
对于字母s:
如果字母.isalpha():
空间计数器=0
击中字母=正确
tmp.追加(信函)
打印信函
elif hit_字母:
空间计数器+=1
如果空间_计数器<2:
tmp.追加(信函)
返回“”。加入(tmp[:-1])
打印报告(cleanstring('Hi to the world'))
这似乎很管用。
过来看。
repr()只给字符串加引号,以便查看单词前后的实际空格数
def cleanstring (s):
hit_letter = False
space_counter = 0
tmp = list()
for letter in s:
if letter.isalpha():
space_counter = 0
hit_letter = True
tmp.append(letter)
print letter
elif hit_letter:
space_counter += 1
if space_counter < 2:
tmp.append(letter)
return ''.join(tmp[:-1])
print repr(cleanstring(' Hi to the world '))
def清洗字符串:
击中字母=错误
空间计数器=0
tmp=list()
对于字母s:
如果字母.isalpha():
空间计数器=0
击中字母=正确
tmp.追加(信函)
打印信函
elif hit_字母:
空间计数器+=1
如果空间_计数器<2:
tmp.追加(信函)
返回“”。加入(tmp[:-1])
打印报告(cleanstring('Hi to the world'))
使用一些递归
def cleanString(word):
if word[0]==" ":
if len(word)>1:
return cleanString(word[1:])
return word[1:]
elif len(word)>1:
return word[0]+cleanString(word[1:])
return word
print cleanString(" abcd ") == "abcd" # True
print cleanString(" abcd ") # abcd
使用一些递归
def cleanString(word):
if word[0]==" ":
if len(word)>1:
return cleanString(word[1:])
return word[1:]
elif len(word)>1:
return word[0]+cleanString(word[1:])
return word
print cleanString(" abcd ") == "abcd" # True
print cleanString(" abcd ") # abcd
如果我将其更改为(I+1),请稍等,我正在运行它,并将在几天后更新minutes@pythonrookie现在就试试这个谢谢你,这真是个好办法。我真的很感谢你的帮助,你不知道你刚才帮我减轻了多少压力。s[len(s)-1]可以是s[-1],s[0:len(s)-1]可以是s[:-1],如果我将其更改为(I+1),请稍等,我正在运行它,几分钟后会更新minutes@pythonrookie现在就试试这个谢谢你,这真是个好办法。我真的很感谢你的帮助,你不知道你刚才帮我减轻了多少压力。s[len(s)-1]可以是s[-1],s[0:len(s)-1]可以是s[:-1]这似乎也不起作用。这个程序仍然是空的,不幸的是没有返回字符串。我不明白你的意思。这个程序(几乎)在我的计算机上运行,它确实返回一个字符串。也许您需要打印结果。这似乎也不起作用。这个程序仍然是空的,不幸的是没有返回字符串。我不明白你的意思。这个程序(几乎)在我的计算机上运行,它确实返回一个字符串。也许你需要打印结果。破坏帖子不是处理此类问题的方法。直接使用“联系我们”表格联系SE以删除帖子。嗨,Chris,我使用“联系我们”表格联系SE,但我需要尽快删除帖子。我被告知我必须手动删除它,因为正如我所说的,行为准则问题。我不确定如果这是我自己创建的帖子,是否可以被称为“故意破坏”,但有人告诉我必须删除它。我希望一旦SE改变了查看我的消息的方式,线程本身就会被删除。这仍然是故意破坏。当你发布问题时,你给予SE使用该帖子的权利。虽然你可以要求删除它,但不能同时破坏它。破坏帖子不是处理此类问题的方法。直接使用“联系我们”表格联系SE以删除帖子。嗨,Chris,我使用“联系我们”表格联系SE,但我需要尽快删除帖子。我被告知我必须手动删除它,因为正如我所说的,行为准则问题。我不确定如果这是我自己创建的帖子,是否可以被称为“故意破坏”,但有人告诉我必须删除它。我希望一旦SE改变了查看我的消息的方式,线程本身就会被删除。这仍然是故意破坏。当你发布问题时,你给予SE使用该帖子的权利。虽然你可以要求将其移除,但你不能同时破坏它。