उदाहरण के लिए यदि एक उदाहरण इनपुट है: पूछें कि आपका देश आपके लिए क्या कर सकता है यह पूछें कि आप अपने देश के लिए क्या कर सकते हैं

मेरा प्रोग्राम वापस आना चाहिए: 'COUNTRY' शब्द 5वें और 17वें स्थान पर आता है।

स्ट्रिंग एक से अधिक बार होती है या नहीं, यह जानने में मुझे केवल भाग के लिए सहायता चाहिए।

यह मेरा अब तक का प्रयास है, मैं अजगर में नया हूँ इसलिए क्षमा करें यदि मेरा प्रश्न बहुत आसानी से उत्तर दिया गया लगता है।

# wordsList=[]
words=input("Enter a sentence without punctuation:\n")
# wordsList.append(words)
# print(wordsList)
for i in words:
    if i in words>1:
        print(words)
# words.split("  ")
# print(words[0])
0
David Dallakyan 1 अप्रैल 2020, 21:07
कृपया वह कोड शामिल करें जो आपने लिखा था जो सही आउटपुट नहीं दे रहा है
 – 
dfundako
1 अप्रैल 2020, 21:08
असुविधा के लिए खेद है, मैंने अपनी पोस्ट संपादित की, दुर्भाग्य से मेरा प्रोग्राम एक त्रुटि के साथ भी आता है।
 – 
David Dallakyan
1 अप्रैल 2020, 21:14
इस पुराने प्रश्न पर एक नज़र डालें: एक सबस्ट्रिंग"> stackoverflow.com/questions/4664850/…
 – 
Arne
1 अप्रैल 2020, 21:18
क्या होगा यदि शब्द 10,000 बार स्ट्रिंग में है? क्या यह कहना चाहिए "XYZ शब्द पहली और दूसरी और तीसरी और चौथी और 5 वीं और 6 वीं में आता है ....."?
 – 
dfundako
1 अप्रैल 2020, 21:19

3 जवाब

घटनाओं की संख्या ज्ञात करने के लिए

इसे करने के शायद कई तरीके हैं। एक आसान तरीका यह होगा कि आप अपने वाक्य को एक सूची में विभाजित करें और घटनाओं की संख्या ज्ञात करें।

sentence = "ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT YOU CAN DO FOR YOUR COUNTRY" 
words_in_a_list = sentence.split(" ")
words_in_a_list.count("COUNTRY")

आप नियमित अभिव्यक्तियों का भी उपयोग कर सकते हैं और यह करना भी बहुत आसान होगा।

import re

m = re.findall("COUNTRY", sentence)

प्रत्येक घटना का स्थान खोजने के लिए

शायद आप पढ़ना चाहते हैं यह पोस्ट . आप search का उपयोग कर सकते हैं जो स्पैन भी लौटाता है। और उन सभी को खोजने के लिए एक लूप लिखें। एक बार जब आप पहले वाले का स्थान जान लेते हैं, तो आगे कई वर्णों से स्ट्रिंग खोजना शुरू करें।

def count_num_occurences(word, sentence):
    start = 0
    pattern = re.compile(word)
    start_locations = []
    while True:
        match_object = there.search(sentence, start)

        if match_object is not None:
            start_locations.append(match_object.start())
            start = 1 + match_object.start()
        else:
            break
    return start_locations
0
Keivan 1 अप्रैल 2020, 21:35
यह वांछित आउटपुट कैसे उत्पन्न करता है कि शब्द किस स्थिति में हैं?
 – 
dfundako
1 अप्रैल 2020, 21:19
str = 'ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT YOU CAN DO FOR YOUR COUNTRY'

# split your sentence and make it a set to get the unique parts
# then make it a list so you ca iterate
parts = list(set(str.split(' ')))

# you count to get the nr of occurences of parts in the str
for part in parts:
    print(f'{part} {str.count(part)}x')

नतीजा

COUNTRY 2x
YOU 4x
ASK 2x
YOUR 2x
CAN 2x
NOT 1x
DO 2x
WHAT 2x
FOR 2x

या पदों के साथ

import re

str = 'ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT YOU CAN DO FOR DO YOUR COUNTRY'

# split your sentence and make it a set to get the unique parts
# then make it a list so you ca iterate
parts = list(set(str.split(' ')))

# you count to get the nr of occurences of parts in the str
for part in parts:
    test = re.findall(part, str)
    print(f'{part} {str.count(part)}x')
    for m in re.finditer(part, str):
        print('     found at', m.start())

नतीजा

DO 3x
     found at 30
     found at 58
     found at 65
ASK 2x
     found at 0
     found at 41
COUNTRY 2x
     found at 18
     found at 73
YOUR 2x
     found at 13
     found at 68
WHAT 2x
     found at 8
     found at 45
YOU 4x
     found at 13
     found at 37
     found at 50
     found at 68
NOT 1x
     found at 4
FOR 2x
     found at 33
     found at 61
CAN 2x
     found at 26
     found at 54
0
Mace 1 अप्रैल 2020, 21:46
आपके सहयोग के लिए धन्यवाद। क्या मैं आखिरी पंक्ति में पूछ सकता हूं कि f' क्या करता है। क्या यह एक समारोह कहता है?
 – 
David Dallakyan
1 अप्रैल 2020, 21:45
टाइपो, क्षमा करें, मैं इसे हटा दूंगा। f' { ]' का प्रयोग टेक्स्ट को वेरिएबल के साथ फॉर्मेट करने के लिए किया जाता है। f'{part} {str.count(part)}x' देखें। यह {} के अंदर 2 वेरिएबल के मानों के साथ एक स्ट्रिंग बनाता है।
 – 
Mace
1 अप्रैल 2020, 21:46

यदि आप केवल वही शब्द चाहते हैं जो एक से अधिक बार आते हैं:

words=input("Enter a sentence without punctuation:\n").strip().split()
word_counts = {}

for word in words:
    if word in word_counts:
        word_counts[word] += 1
    else:
        word_counts[word] = 1

for word in word_counts.keys():
    if word_counts[word] > 1:
        print(word)

बस एक शब्दकोश में सभी गणनाओं को संग्रहीत करना और फिर शब्दकोश के माध्यम से लूप करना जो एक से अधिक बार होते हैं उन्हें मुद्रित करने के लिए।

साथ ही कुशल भी क्योंकि यह केवल एक बार इनपुट के माध्यम से जाता है और फिर एक बार शब्दकोश के माध्यम से जाता है

यदि आप शब्दों की वास्तविक स्थिति चाहते हैं:

words=input("Enter a sentence without punctuation:\n").strip().split()
word_counts = {}

for i in len(words):
    word = words[i]
    if word in word_counts:
        word_counts[word].append(i) // keep a list of indices
    else:
        word_counts[word] = [i]

for word in word_counts.keys():
    if len(word_counts[word]) > 1:
        print("{0} found in positions: {1}".format(word, word_counts[word]))
0
mattyx17 1 अप्रैल 2020, 22:03
क्या मैं पूछ सकता हूं कि एक सूची के बजाय शब्द_गणना कैसे महत्वपूर्ण है और यह कैसे मदद करता है। मैं अजगर में एक नौसिखिया हूँ। पहले ही, आपका बहुत धन्यवाद।
 – 
David Dallakyan
1 अप्रैल 2020, 21:44
तो एक शब्दकोष के रूप में शब्द गणना करके आप शब्द को उसकी गिनती के साथ संग्रहीत करते हैं। तो पहला लूप कुछ ऐसा उत्पन्न करेगा जैसे {"ASK": 2, "NOT": 1, "WHAT": 2, ...} फिर दूसरा लूप उन शब्दों को प्रिंट करता है जहां संबंधित गिनती 1 से अधिक है। यदि आप एक सूची का उपयोग करते हैं तो आपको प्रत्येक शब्द की गिनती प्राप्त करने के लिए सूची के माध्यम से लूप करना होगा और फिर इसे प्रिंट करें। यह ओ (एन ^ 2) एक शब्दकोश के साथ है जिसे आप केवल दो बार शब्दों के माध्यम से लूप करते हैं
 – 
mattyx17
1 अप्रैल 2020, 21:51