Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 21, 2011 18:33:19

r3m1x
От:
Зарегистрирован: 2011-07-30
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Составить список из строки

Здравствуйте! Например есть строка “1 2 3”, используя split(“ ”), я получаю , а надо . Подскажите пожалуйста как сделать.



Офлайн

#2 Сен. 21, 2011 18:38:48

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Составить список из строки

Вызывай split() без аргументов:

>>> "1 2     3".split()
['1', '2', '3']
Или надо обязательно сохранять лишние пробелы перед тройкой? Тогда так:
>>> import re
>>> re.split(r'\b\s', "1 2 3")
['1', '2', ' 3']



Отредактировано (Сен. 21, 2011 18:51:55)

Офлайн

#3 Сен. 21, 2011 19:20:21

r3m1x
От:
Зарегистрирован: 2011-07-30
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Составить список из строки

Да, нужно сохранить пробелы. Большое спасибо )



Офлайн

#4 Сен. 22, 2011 02:50:27

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

Составить список из строки

>>> s = "1 2     3"
>>> s.split(' ', 2)
['1', '2', ' 3']
>>> tuple(s.split(' ', 2)[-1])
(' ', ' ', ' ', ' ', '3')
>>>



Офлайн

#5 Сен. 23, 2011 14:48:19

r3m1x
От:
Зарегистрирован: 2011-07-30
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Составить список из строки

re.split(r'\b\s',  "1 2     3")
не работает с кирилицей, например: re.split(r'\b\s', “а б”) возвращает

s.split(' ', 2)
не работает если вначале пробелы, например: “ 1 2 3”.split(' ', 2) возвращает



Отредактировано (Сен. 23, 2011 14:49:06)

Офлайн

#6 Сен. 23, 2011 15:20:13

dimabest
От:
Зарегистрирован: 2009-02-12
Сообщения: 253
Репутация: +  0  -
Профиль   Отправить e-mail  

Составить список из строки

p = re.compile(r'(?<=\b)\s', re.U)
ls = p.split(u" я у z")
for e in ls:
print "'%s'" % e



Офлайн

#7 Сен. 23, 2011 15:32:20

r3m1x
От:
Зарегистрирован: 2011-07-30
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Составить список из строки

dimabest
Спасибо! Если не сложно объяните еще пожалуйста вот это: (r'(?<=\b)\s', re.U)



Офлайн

#8 Сен. 23, 2011 19:51:52

dimabest
От:
Зарегистрирован: 2009-02-12
Сообщения: 253
Репутация: +  0  -
Профиль   Отправить e-mail  

Составить список из строки

шутка :)

Шаблон менять не нужно, достаточно добавить флаг re.U

Читаем что означают \b \w \W и как флаг re.U меняет их поведение http://docs.python.org/library/re.html#re.U



Офлайн

#9 Сен. 24, 2011 07:05:44

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

Составить список из строки

r3m1x
не работает если вначале пробелы, например: “ 1 2 3”.split(' ', 2) возвращает
сделай .lstrip()



Отредактировано (Сен. 24, 2011 07:06:18)

Офлайн

#10 Сен. 24, 2011 11:04:57

r3m1x
От:
Зарегистрирован: 2011-07-30
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Составить список из строки

py.user.next
Как раз нужно



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version