Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 4, 2014 18:05:00

gelius
Зарегистрирован: 2013-03-18
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

split

Делю строку вида:

слово1.слово2.слово3
Так:
slova = slova.split('.')
Получается:
['слово1', 'слово2', 'слово3']
Нужно:
['слово1.', 'слово2.', 'слово3.']

Офлайн

#2 Окт. 4, 2014 18:21:10

Nata
От:
Зарегистрирован: 2010-10-02
Сообщения: 87
Репутация: +  6  -
Профиль   Отправить e-mail  

split

>>> import re
>>> li=re.split("(\.)", "slovo.slovo.slovo.")
>>> [x+y for x,y in zip(li,li[1:])[::2]]
['slovo.', 'slovo.', 'slovo.']
>>> 

:P стремный вариант… не надо так делать…



Отредактировано Nata (Окт. 4, 2014 18:30:42)

Офлайн

#3 Окт. 4, 2014 18:40:07

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

split

words = "w1.w2.w3"
sep = "."
print [word + sep for word in words.split(sep)]

Офлайн

#4 Окт. 4, 2014 19:08:36

Nata
От:
Зарегистрирован: 2010-10-02
Сообщения: 87
Репутация: +  6  -
Профиль   Отправить e-mail  

split

vrabey
:D
это слишком просто…



Офлайн

#5 Окт. 4, 2014 19:29:57

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

split

Nata
это слишком просто
так?
words = “w1.w2.w3”
sep = “.”
print “ ”.join(words.split(sep)).split()

Отредактировано vrabey (Окт. 4, 2014 21:15:20)

Офлайн

#6 Окт. 4, 2014 20:02:21

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

split

re.findall(r'([^.]+\.)', s+'.')



Офлайн

#7 Окт. 4, 2014 20:09:31

Nata
От:
Зарегистрирован: 2010-10-02
Сообщения: 87
Репутация: +  6  -
Профиль   Отправить e-mail  

split

vrabey
так?
этот вариант не работает :)
про “слишком просто” была шутка, конечно; ваш первый вариант самый логичный и очевидный, просто странно тогда, что такой вопрос вообще был задан. я подумала, что надо найти именно какой-то обходной вариант; нам часто в универе такие задания давали, типа, “разбейте текст на слова, не используя split” и пр.

Budulianin
супер! the best!



Отредактировано Nata (Окт. 4, 2014 21:53:20)

Офлайн

#8 Окт. 5, 2014 01:06:45

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

split

Nata
нам часто в универе такие задания давали, типа, “разбейте текст на слова, не используя split”

Это бывает по нескольким причинам. Если именно .split() брать, то она не подходит для очень больших строк, потому что создаёт список, на который может не хватить памяти. Если же брать алгоритм разделения, то подобные задания возникают и для массивов, для которых .split() может не быть.

gelius
Делю строку вида:
слово1.слово2.слово3
gelius
Нужно:
['слово1.', 'слово2.', 'слово3.']

Странно, что при разделении строки, в которой нет последней точки, она появляется.
Поэтому либо нужно разделить и объединять с нужным символом в конце. Либо нужно исходную строку сначала привести к виду с точкой в конце, а потом разделять.

>>> s = 'слово1.слово2.слово3'
>>> 
>>> out = [i + '.' for i in s.split('.')]
>>> out
['слово1.', 'слово2.', 'слово3.']
>>>

Это похоже на вариант vrabey, но не объединяет разделитель слов с суфиксом.



Отредактировано py.user.next (Окт. 5, 2014 01:09:57)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version