使用For循环替换字符串的一部分

时间:2018-11-13 22:26:42

标签: python string

我需要让用户输入作业的句子。然后,使用for循环,我需要用%20替换所有空格,以便准备将字符串用作URL。我一生无法解决。

sentence = str(input("Please enter sentence:"))
space = (" ")

for space in sentence:
    space.replace(sentence, space, "%20", 500)
print(sentence)

这是我到目前为止输入的内容,但这是完全错误的。

3 个答案:

答案 0 :(得分:2)

Python中的字符串无法修改。 replace()函数返回完成所有替换的新字符串。您需要将此结果分配到某个地方。因此,您可以这样做:

sentence = sentence.replace(" ", "%20")

如果要循环执行,则需要在另一个变量中构建结果。

new_sentence = ""
for char in sentence:
    if char == " ":
        new_sentence += "%20"
    else:
        new_sentence += char

在循环中使用replace()毫无意义。

答案 1 :(得分:1)

在第一行之后用print(sentence.replace(" ","%20"))

替换所有内容

或者,如果您确实必须使用循环:

s = ''
for x in sentence:
    if x == ' ':
        s += "%20"
    else:
        s += x
print(s)

答案 2 :(得分:0)

您在这里遇到一些问题:

  1. 您在循环之前定义的变量 space 等于“”,但是您为for循环变量使用了相同的名称,该变量将遍历字符串句子字符串,在循环中,它将使用循环定义的值。

  2. 您给replace方法提供了太多参数,这是字符串对象的方法,因此您无需将大字符串传递给它来对Replace Method

    进行操作
  3. 您在空格字符串而不是句子字符串

  4. 上使用了replace方法

在现实生活中做这件事的好方法:

old = ' '  
new = '%20'

sentence = str(input("Please enter sentence:"))
print(sentence.replace(old,new))

您的老师可能追求的方式:

sentence = str(input("Please enter sentence:"))
old = ' '  
new = '%20'
newSentence = ''

for letter in sentence:
    if letter == ' ':
        newSentence += new
    else:
        newSentence += letter


print(newSentence)