从输入中删除一些特定文本?

时间:2017-03-27 11:39:00

标签: python python-3.x

say_d = ["say", "tell me"]
a = input("Please Type An Action For Me To Do: ")
if any(word in a for word in say_d):
    print(a)

如果say_d中包含任何关键字,则此程序会打印输入的输入。但它也会打印关键字。有没有办法从假定的输出中删除关键字?像:

say_d = ["say", "tell me"]
a = input("Please Type An Action For Me To Do: ")
if any(word in a for word in say_d):
    print(a-say_d)

3 个答案:

答案 0 :(得分:1)

您可以使用正则表达式或str.replace将空白字符串替换为常用字词:

import re
say_d = ["say","tell me"]
a = (input("Please Type An Action For Me To Do: "))
if any(word in a for word in say_d):
    print(re.sub('|\b'.join(say_d), '', a))

但请注意,如果您想删除输入中存在thery的常用字词,则无需使用any,因为这两个函数(re.substr.replace)替换只有它们存在于文本中的字符串。

此外,部分word in a将检查整个输入字符串中的成员资格,而不是其单词。也就是说,如果输入字符串中的一个单词包含say_d内的单词,它将返回True。与包含sayulita一词的say类似。

为了解决这个问题,您可以再次检查成员资格,方法是拆分输入字符串,然后循环它或使用正则表达式。

答案 1 :(得分:0)

这就是你要找的东西:

say_d=["say","tell me"]
a=(input("Please Type An Action For Me To Do: "))
if any(word in a for word in say_d):
  set2 = set(say_d)
  result = [element for element in a if element not in set2]
  print(list(result))

答案 2 :(得分:0)

如果没有任何输入和输出,我假设你想要从输入字符串中删除任何候选词(列表中的say_d),所以也许它可以像下面这样简单:

say_d=["say","tell me"]
a=(input("Please Type An Action For Me To Do: "))
ret = reduce(lambda r, w: r.replace(w, ''), say_d, a)
if len(ret) != len(a):
  print ret