如何在python

时间:2016-04-02 03:44:59

标签: python

我正在尝试创建各种“翻译器”,如果raw_input有任何诅咒(预先确定,我列出可能有6个测试者),该函数将输出一个带有诅咒的字符串为****

这是我的代码:

def censor(sequence):
    curse = ('badword1', 'badword2', 'badword3', 'badword4', 'badword5', 'badword6')
    nsequence = sequence.split()
    aword = '' 
    bsequence = []
    for x in range(0, len(nsequence)):
        if nsequence[x] != curse:
            bsequence.append(nsequence[x])
        else:
            bsequence.append('*' * (len(x)))
        latest = ''.join(bsequence)
        return bsequence



if __name__ == "__main__":
    print(censor(raw_input("Your sentence here: ")))

2 个答案:

答案 0 :(得分:2)

一种简单的方法是简单地使用Python的本地字符串方法:str.replace

def censor(string):
    curses = ('badword1', 'badword2', 'badword3', 'badword4', 'badword5', 'badword6')
    for curse in curses:
        string = string.replace(curse, '*' * len(curse))
    return string

为了提高效率,您可以尝试将curses列表编译为正则表达式,然后执行单个替换操作。

Python Documentation

答案 1 :(得分:0)

首先,没有必要在这里迭代元素索引。 Python允许您迭代元素本身,这是这种情况的理想选择。

其次,您要检查给定句子中的每个单词是否等于潜在坏词的整个tuple 。您想检查tupleset会更好)中的每个单词是否为

第三,当你执行len(x)时,你正在混合索引和元素 - 它假定x是单词本身,但它实际上是索引,正如你在别处使用的那样。

第四,您正在循环中加入序列,并在空字符串上加入。您应该在空格中加入它,并且只有在您检查了每个元素之后才会加入它。

def censor(sequence):
    curse = {'badword1', 'badword2', 'badword3', 'badword4', 'badword5', 'badword6'}
    nsequence = sequence.split()
    bsequence = []
    for x in nsequence:
        if x not in curse:
            bsequence.append(x)
        else:
            bsequence.append('*' * (len(x)))
    return ' '.join(bsequence)