Python列表,.replace()问题

时间:2013-12-02 20:55:27

标签: python list replace

sentence = input("Say a sentence: ").split()
vowels = 'aeiouAEIOU'                       
for i in sentence:
    if i.isalpha() == True:
        if i[0] in vowels:
            print(i + "way")
            new = i + "way"
            sentence.replace(i, new)
        else:
            print(i[1:] + i[0] + "ay")
            new = i[1:] + i[0] + "ay"
            sentence.replace(i, new)
    else:
        print(i)
print(sentence)

我正在尝试制作一个明胶句子转换器,我已经能够使转换器打印出正确的翻译值,但我不能让程序改变列表的实际值,我需要它这样做我可以像“我喜欢兔子”这样的字符串格式打印转换后的文本,就像原始文本一样,而不是像以下列表:

  • I
  • 喜欢

我想知道如何使用replace()函数来更改for循环和if语句中的列表。如果有另一种更好的方式会更好。 谢谢。

2 个答案:

答案 0 :(得分:2)

sentence.replace(i, new)函数返回新字符串 - 它不会就地替换(在原始字符串上)。

您希望循环索引以轻松修改正在迭代的列表(您在开车时不会改变您的车轮,是吗?):

sentence = input("Say a sentence: ").split()
vowels = 'aeiouAEIOU'                       
for idx in range(len(sentence)):
    to_replace = sentence[idx]
    if to_replace.isalpha() == True:
        if to_replace[0] in vowels:
            print(to_replace + "way")
            new = i + "way"
        else:
            print(to_replace[1:] + to_replace[0] + "ay")
            new = to_replace[1:] + to_replace[0] + "ay"
        sentence[idx] = new
    else:
        print(to_replace)
print(sentence)

您真的不需要致电replace()(这是string方法,而不是list。您可以改为分配给sentence[idx]

答案 1 :(得分:0)

您的list没有.replace方法,但str中的list有。

在迭代项目时,您似乎想要修改list

sentence = input("Say a sentence: ").split()
vowels = 'aeiouAEIOU'                       
for idx, word in enumerate(sentence):
    if word.isalpha() == True:
        if word[0] in vowels:
            print(word + "way")
            new = word + "way"
        else:
            print(word[1:] + word[0] + "ay")
            new = word[1:] + word[0] + "ay"
        sentence[idx] = new
    else:
        print(word)
print(sentence)

enumerate内置函数在迭代和修改项目时特别有用。