[Python] كيفية تقسيم سلسلة إلى قائمة؟



Answers

يُقسِّم text في 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)



اعتمادا على ما تنوي القيام به مع الجملة الخاصة بك ، كقائمة ، قد ترغب في إلقاء نظرة على اللغة الطبيعية Took Kit . انها تتعامل بشكل كبير مع معالجة النصوص والتقييم. يمكنك أيضًا استخدامه لحل مشكلتك:

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() أفضل إذا كنت لا تخطط للقيام بأي تلاعب معقد للحمولة.




أعتقد أنك مرتبك بسبب خطأ مطبعي.

استبدل print(words) print(word) داخل الحلقة حتى تتم طباعة كل كلمة على سطر مختلف




أريد وظيفة بيثون لتقسيم جملة (إدخال) وتخزين كل كلمة في قائمة

أسلوب 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(word) :

إعادة تسمية متغير 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)

إذا كنت ترغب في إنشاء قائمة يدويًا في حلقة for لسبب ما ، append() طريقة append() القائمة ، ربما لأنك ترغب في تقليل كل الكلمات (على سبيل المثال):

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

أو أكثر إتقانا قليلا ، وذلك باستخدام list-comprehension :

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





Links