Как преобразовать длинную строку в список слов в Python [duplicate]

Это одно из мест, с помощью которого привязка данных, используемая во многих новых фреймворках JavaScript, будет очень полезна для вас ...

Итак, если вы используете Angular, React или любые другие фреймворки, которые делают два способа связывания данных, эта проблема просто исправлена ​​для вас, поэтому простым языком ваш результат undefined на первом этапе, поэтому вы получили result = undefined до получения данных, а затем, как только вы получите результат , он будет обновляться и присваиваться новому значению, которое отвечает на ваш вызов Ajax ...

Но как вы можете сделать это в чистом javascript или jQuery, например, как вы задали этот вопрос?

Вы можете использовать обратный вызов, обещание и недавно наблюдаемое, чтобы обрабатывать его для вас, например, в обещаниях мы имеем некоторые функции, такие как success () или then (), которые будут выполняться, когда ваши данные будут готовы для вас, с функцией обратного вызова или подписки на наблюдаемые.

Например, в вашем случае, в котором вы используете jQuery, вы можете сделать что-то вроде этого:

$(document).ready(function(){
    function foo() {
        $.ajax({url: "api/data", success: function(data){
            fooDone(data); //after we have data, we pass it to fooDone
        }});
    };

    function fooDone(data) {
        console.log(data); //fooDone has the data and console.log it
    };

    foo(); //call happens here
});

Для получения дополнительной информации n изучение обещаний и наблюдаемых, которые являются новыми способами для создания асинхронных материалов.

14
задан Martin Thoma 2 November 2014 в 21:04
поделиться

10 ответов

def unique_list(l):
    ulist = []
    [ulist.append(x) for x in l if x not in ulist]
    return ulist

a="calvin klein design dress calvin klein"
a=' '.join(unique_list(a.split()))
13
ответ дан spicavigo 26 August 2018 в 04:35
поделиться

Несколько ответов довольно близки к этому, но не совсем закончились тем, что я сделал:

def uniques( your_string ):    
    seen = set()
    return ' '.join( seen.add(i) or i for i in your_string.split() if i not in seen )

Конечно, если вы хотите, чтобы он был немного чистым или быстрым, мы можем немного реорганизовать :

def uniques( your_string ):    
    words = your_string.split()

    seen = set()
    seen_add = seen.add

    def add(x):
        seen_add(x)  
        return x

    return ' '.join( add(i) for i in words if i not in seen )

Я думаю, что вторая версия примерно такая же эффективная, как вы можете получить в небольшом количестве кода. (Больше кода можно использовать для выполнения всей работы в одном сканировании во входной строке, но для большинства рабочих нагрузок это должно быть достаточно.)

0
ответ дан Chris Phillips 26 August 2018 в 04:35
поделиться
string = 'calvin klein design dress calvin klein'

def uniquify(string):
    output = []
    seen = set()
    for word in string.split():
        if word not in seen:
            output.append(word)
            seen.add(word)
    return ' '.join(output)

print uniquify(string)
5
ответ дан ekhumoro 26 August 2018 в 04:35
поделиться

Вырезать и вставить из рецептов itertools

from itertools import ifilterfalse

def unique_everseen(iterable, key=None):
    "List unique elements, preserving order. Remember all elements ever seen."
    # unique_everseen('AAAABBBCCDAABBB') --> A B C D
    # unique_everseen('ABBCcAD', str.lower) --> A B C D
    seen = set()
    seen_add = seen.add
    if key is None:
        for element in ifilterfalse(seen.__contains__, iterable):
            seen_add(element)
            yield element
    else:
        for element in iterable:
            k = key(element)
            if k not in seen:
                seen_add(k)
                yield element

Мне очень жаль, что они не смогли бы сделать модуль из этих рецептов в ближайшее время. Мне очень хотелось бы иметь возможность делать from itertools_recipes import unique_everseen вместо использования вырезания и вставки каждый раз, когда мне что-то понадобится.

Используйте так:

def unique_words(string, ignore_case=False):
    key = None
    if ignore_case:
        key = str.lower
    return " ".join(unique_everseen(string.split(), key=key))

string2 = unique_words(string1)
7
ответ дан Lauritz V. Thaulow 26 August 2018 в 04:35
поделиться
string1 = "calvin klein design dress calvin klein"
words = string1.split()
print " ".join(sorted(set(words), key=words.index))

Сортирует набор всех (уникальных) слов в вашей строке индексом слова в исходном списке слов.

25
ответ дан Markus 26 August 2018 в 04:35
поделиться

В Python 2.7+ вы можете использовать collections.OrderedDict для этого:

from collections import OrderedDict
s = "calvin klein design dress calvin klein"
print ' '.join(OrderedDict((w,w) for w in s.split()).keys())
7
ответ дан NPE 26 August 2018 в 04:35
поделиться

Вы можете использовать набор для отслеживания уже обработанных слов.

words = set()
result = ''
for word in string1.split():
    if word not in words:
        result = result + word + ' '
        words.add(word)
print result
2
ответ дан Pablo Santa Cruz 26 August 2018 в 04:35
поделиться

Вы можете удалить повторяющиеся или повторяющиеся слова из текстового файла или строки, используя следующие коды:

from collections import Counter
for lines in all_words:

    line=''.join(lines.lower())
    new_data1=' '.join(lemmatize_sentence(line))
    new_data2 = word_tokenize(new_data1)
    new_data3=nltk.pos_tag(new_data2)

    # below code is for removal of repeated words

    for i in range(0, len(new_data3)):
        new_data3[i] = "".join(new_data3[i])
    UniqW = Counter(new_data3)
    new_data5 = " ".join(UniqW.keys())
    print (new_data5)


    new_data.append(new_data5)


print (new_data)

P.S. -Идентификация по требованию. Надеюсь, это поможет !!!

0
ответ дан rahul ranjan 26 August 2018 в 04:35
поделиться

Вопрос: Удалить дубликаты в строке

 from _collections import OrderedDict

    a = "Gina Gini Gini Protijayi"

    aa = OrderedDict().fromkeys(a.split())
    print(' '.join(aa))
   # output => Gina Gini Protijayi
0
ответ дан Soudipta Dutta 26 August 2018 в 04:35
поделиться

11 и 2 работают отлично:

    s="the sky is blue very blue"
    s=s.lower()
    slist = s.split()
    print " ".join(sorted(set(slist), key=slist.index))

и 2

    s="the sky is blue very blue"
    s=s.lower()
    slist = s.split()
    print " ".join(sorted(set(slist), key=slist.index))
0
ответ дан the chib 26 August 2018 в 04:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: