[python] एक स्ट्रिंग को सूची में कैसे विभाजित करें?


Answers

व्हाइटस्पेस के लगातार किसी भी रन पर text में स्ट्रिंग को विभाजित करता है।

words = text.split()      

ड्रिमिटर पर text में स्ट्रिंग को विभाजित करें: ","

words = text.split(",")   

शब्द चर एक list होगी और डेलीमीटर पर text विभाजन से शब्द शामिल होंगे।

Question

मैं चाहता हूं कि मेरा पायथन फ़ंक्शन एक वाक्य (इनपुट) को विभाजित करे और प्रत्येक शब्द को सूची में संग्रहीत करे। जो कोड मैंने अभी लिखा है वह वाक्य को विभाजित करता है, लेकिन शब्दों को सूची के रूप में संग्रहीत नहीं करता है। मैं उसको कैसे करू?

def split_line(text):

    # split the text
    words = text.split()

    # for each word in the line:
    for word in words:

        # print the word
        print(word)



आप अपनी सजा-सूची के साथ क्या करने की योजना बना रहे हैं, इस पर निर्भर करते हुए, आप प्राकृतिक भाषा टूक किट को देखना चाहेंगे। यह टेक्स्ट प्रोसेसिंग और मूल्यांकन के साथ भारी सौदे करता है। आप अपनी समस्या का समाधान करने के लिए इसका भी उपयोग कर सकते हैं:

import nltk
words = nltk.word_tokenize(raw_sentence)

इसमें विराम चिह्न को विभाजित करने का अतिरिक्त लाभ है।

उदाहरण:

>>> import nltk
>>> s = "The fox's foot grazed the sleeping dog, waking it."
>>> words = nltk.word_tokenize(s)
>>> words
['The', 'fox', "'s", 'foot', 'grazed', 'the', 'sleeping', 'dog', ',', 
'waking', 'it', '.']

यह आपको किसी भी विराम चिह्न को फ़िल्टर करने की अनुमति देता है जिसे आप नहीं चाहते हैं और केवल शब्दों का उपयोग करें।

कृपया ध्यान दें कि string.split() का उपयोग करने वाले अन्य समाधान बेहतर हैं यदि आप string.split() किसी भी जटिल हेरफेर करने की योजना नहीं बनाते हैं।




मैं चाहता हूं कि मेरा पायथन फ़ंक्शन एक वाक्य (इनपुट) को विभाजित करे और प्रत्येक शब्द को सूची में संग्रहीत करे

str().split() विधि यह करता है, यह एक स्ट्रिंग लेता है, इसे एक सूची में विभाजित करता है:

>>> the_string = "this is a sentence"
>>> words = the_string.split(" ")
>>> print(words)
['this', 'is', 'a', 'sentence']
>>> type(words)
<type 'list'> # or <class 'list'> in Python 3.0

आपके पास जो समस्या है, वह टाइपो की वजह से है, आपने print(words) बजाय print(words) लिखा है:

word वैरिएबल को current_word पुनर्नामित करना, यह आपके पास था:

def split_line(text):
    words = text.split()
    for current_word in words:
        print(words)

.. जब आपको करना चाहिए था:

def split_line(text):
    words = text.split()
    for current_word in words:
        print(current_word)

अगर किसी कारण से आप लूप में मैन्युअल रूप से एक सूची बनाना चाहते हैं, तो आप सूची append() विधि का उपयोग करेंगे, शायद इसलिए कि आप सभी शब्दों को कम-केस करना चाहते हैं (उदाहरण के लिए):

my_list = [] # make empty list
for current_word in words:
    my_list.append(current_word.lower())

एक list-comprehension का उपयोग करते हुए, थोड़ा सा neater:

my_list = [current_word.lower() for current_word in words]



मुझे लगता है कि आप एक टाइपो के कारण उलझन में हैं।

print(word) को अपने लूप के अंदर print(words) साथ बदलें ताकि प्रत्येक शब्द एक अलग पंक्ति पर मुद्रित हो




Related