用星号替换单词:模式字符串的部分也将替换

时间:2019-07-09 10:05:12

标签: python

我正在尝试一项家庭作业,其中我应该检查句子中的某些单词。有一个要检查的单词列表,程序应该检查它从用户输入中获得的句子中的单词。

我已经解决了问题,但是一路上我尝试了一些我也希望能做的事情,但是没有成功。以下是两个不同的程序,其中一个有效,而另一个无效。唯一的区别是在 fin 中搜索 word_list [i] 的行。

from cs50 import get_string
from sys import argv


def main():
if len(argv) != 2:
        print("Usage: python bleep.py dictionary")
        exit(1)

    fin = open(argv[1])
    print("What message would you like to censor?")
    message = get_string()
    word_list = message.split()

    # This variant works.
    for i in range(len(word_list)):
        if (word_list[i].lower() + '\n') in fin:
            word_list[i] = '*' * len(word_list[i])
        fin.seek(0)

    # The following doesn't work.
    # for i in range(len(word_list)):
    #    if word_list[i].lower() in fin.read(): 
    #        word_list[i] = '*' * len(word_list[i])
    #    fin.seek(0)

    print(' '.join(word_list))

    fin.close()

if __name__ == "__main__":
    main()

假设我想用****审查“ heck”,但是第二个程序还审查了像“ he”这样的字符串,这只是“ heck”的一部分。

1 个答案:

答案 0 :(得分:0)

"he" in "heck"为真的问题。

第一个代码通过确保单词以\n结尾来解决这个问题。

另一点:您正在读取用户输入中每个单词的文件。它效率更高且概率更高。更加容易编写,读取和调试,以读取一次文件并将其存储在字符串(或更好的分隔符字符串列表)中