2010-10-09 4 views
6

मान लें कि मैं कच्चे इनपुट के लिए उपयोगकर्ता से पूछता हूं और उन्होंने कहा, "यह एक संदेश है।" यदि उस कच्चे इनपुट में शब्द "संदेश" होता है तो उसके बाद यह कार्रवाई करेगा। क्या मैं देख सकता हूं कि यह कैसे किया जा सकता है?मैं कैसे जांचूं कि वाक्य में पायथन में एक निश्चित शब्द है और फिर कोई क्रिया करें?

if "message" in raw_input(): 
    action() 

आप विभिन्न कार्यों के लिए अलग अलग शब्द मैप करने के लिए आवश्यक हैं, तो आप कुछ इस तरह कर सकता है::

# actions 
def action(): 
    print "action" 

def other_action(): 
    print "other action" 

def default_action(): 
    print "default action" 

# word to action translation function 
def word_to_action(word): 
    return { 
     "message": action, 
     "sentence": other_action 
    }.get(word, default_action)() 

# get input, split into single words 
w = raw_input("Input: ").split() 

# apply the word to action translation to every word and act accordingly 
map(word_to_action, w) 

+2

आप सामग्री फ़िल्टर बनाने की कोशिश करते हैं, तो इस पर विचार करें: शब्द "क्लासिक" उस में "गधा" है (। जो, Btw गधा के लिए एक और शब्द है) । यह निश्चित रूप से केवल एक नमूना है- – knitti

उत्तर

7

@knitti द्वारा टिप्पणी के आधार पर हो रहा है, समस्या यह है कि आप पहली बार शब्दों में सजा को विभाजित करने के लिए, तो जाँच की आवश्यकता है:

term = "message" #term we want to search for 
input = raw_input() #read input from user 

words = input.split() #split the sentence into individual words 

if term in words: #see if one of the words in the sentence is the word we want 
    do_stuff() 

अन्यथा अगर आप वाक्य था "वह एक एक क्लासिक है "और आपने यह जांचने की कोशिश की कि इसमें" गधे "शब्द है या नहीं, यह गलत तरीके से वापस आ जाएगा।

बेशक, यह अभी भी सही नहीं है क्योंकि आपको विराम चिह्न को अलग करने और क्या नहीं (जैसे, आदि) जैसी चीजों के बारे में चिंता करनी पड़ सकती है क्योंकि अन्यथा वाक्य "वह एक क्लासिक है।" "क्लासिक" (अंत में अवधि की वजह से) की खोज के लिए अभी भी झूठी वापसी होगी। बजाय पहिया बदलने, यहाँ पायथन में एक वाक्य से विराम चिह्न अलग करना पर एक अच्छी पोस्ट है:

Best way to strip punctuation from a string in Python

भी विचार करने के लिए है, तो आप raw_input परिणाम और करने के लिए अपना खोज शब्द बदलने के लिए चाहते हो सकता है केस-संवेदनशीलता नहीं है एक खोज करने से पहले लोअरकेस। str कक्षा पर lower() फ़ंक्शन का उपयोग करके आप आसानी से ऐसा कर सकते हैं।

इन समस्याओं हमेशा सरल करने लगते हैं ...

0
if "message" in sentence: 
    do_action() 
+0

धन्यवाद एमटीई! मुझे यह जवाब देने के बाद मैं बेवकूफ महसूस करता हूं। –

+2

यह सबस्ट्रिंग मिलान के मामले के कारण काम नहीं करेगा। – DehengYe

1

बेशक यह एक बहुत ही सरल उदाहरण है ध्यान दें, यह उस मामले के लिए एक डिफ़ॉल्ट कार्रवाई को भी परिभाषित करता है जब इनपुट में कोई भी ट्रिगर शब्द नहीं होता है।

उपरोक्त मैपिंग मुहावरे पर अधिक जानकारी के लिए here देखें, जो वास्तव में 'स्विच स्टेटमेंट' प्राप्त करने के पाइथन का तरीका है।

संबंधित मुद्दे