Форум сайта python.su
0
Друзья, здравствуйте
Подскажите пожалуйста как решить такую задачку:
Необходимо в строке оставить уникальные цифры или буквы, остальные удалить.
Я попробывал вот так:
str='ВРЕМЯ НЕ ЖДЁТ' set( x for x in str if x.isalnum() )
set([])
Офлайн
0
Простите, нашел решение сам))
str='ВРЕМЯ НЕ ЖДЁТ' str=unicode( str, 'UTF-8' ) # или str=u'ВРЕМЯ НЕ ЖДЁТ' set( x for x in str if x.isalnum() )
set([u'\u0401', u'\u0420', u'\u0423', u'\u0422', u'\u0427', u'\u042f', u'\u0410', u'\u0418', u'\u041d', u'\u041f'])
Офлайн
35
Dobrodelесть же генератор множеств. лучше его юзатьset( x for x in str if x.isalnum() )
{ x for x in str if x.isalnum() }
Офлайн
857
Вариант через filter.
>>> s = 'abcabc123123!@#$' >>> g = filter(str.isalnum, set(s)) >>> set(g) {'a', 'c', 'b', '1', '3', '2'} >>>
Офлайн
0
Друзья, благодарю Вас за ответы.
Но я так думаю, что Вы написали одно и тоже. Только тут проблема была именно в русских буквах.
Я протестировал - получил что re.sub работает не хуже, по времени обработки. Поэтому я использовал именно вариант с re.
name='ВРЕМЯ НЕ ЖДЁТ' inword = '[\s,.:;"\'§±><)(*&^%$@!~`]' set(re.sub( inword, '', name ))
Отредактировано Dobrodel (Янв. 11, 2015 11:59:39)
Офлайн
857
DobrodelАлгоритм-то другой получился.
Я протестировал - получил что re.sub работает не хуже, по времени обработки.
name='ВРЕМЯ НЕ ЖДЁТ©'
Офлайн