2017-03-27 1 views
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): 
    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): 
    set2 = set(say_d) 
    result = [element for element in a if element not in set2] 
    print(list(result)) 
+0

샘플 입력/출력 – anekix

+0

'if' 블록 안의 * '*'키워드와 일치하는'any'를 사용했기 때문에. 일치하는 키워드에 도달 할 때까지'say_d'를 통해 반복되는 'for'루프를 사용하면 어떤 단어인지 알 수 있고 아무 것도없이 'str.replace'할 수 있습니다. 이것은 또한 첫 번째 트리거 단어와 일치하는 경우'say_d '전체를 반복 할 필요가 없음을 의미합니다. – jonrsharpe

+0

가능한 [파이썬에서 특정 단어를 제거하는 정규식]의 복제본 (http://stackoverflow.com/questions/36311931/regex-to-remove-specific-words-in-python) –

답변

1
당신은 빈 문자열로 일반적인 단어 대체 정규식 또는 str.replace을 사용할 수 있습니다

:

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) 
+0

감사합니다 !!!!! – 3vil

0

이 당신이 찾고 무엇

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)이 st 그 (것)들의 반지는 당신의 원본에서 존재한다.

또한 word in a 부분은 단어가 아닌 전체 입력 문자열 내 구성원을 확인합니다. 즉, 입력 문자열 내의 단어 중 하나에 say_d 안에 단어가 포함되어 있으면 True를 반환합니다. 단어 say을 포함하는 sayulita과 같습니다.

이 문제를 해결하려면 다시 입력 문자열을 분할 한 다음 반복하거나 정규식을 사용하여 구성원을 확인할 수 있습니다.

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 
: 문제의 모든 입력 및 출력없이
0

, 난 당신이 입력 문자열에서 (목록 say_d에서), 그래서 어쩌면 아래처럼 간단 할 수있는 후보 단어를 제거한다고 가정
관련 문제