Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 14, 2013 15:25:06

Jeck290
От:
Зарегистрирован: 2010-01-03
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Обрезать строку по пробелам.

Есть вот такая строка

s = “”“Строка строка Строка строка Строка строка Строка, строка Строка== строка Строка строка”“”

нужно укоротить строку вставляя каждый третий пробел символ конца строки , на выходе должна быть вот такая картина

Строка строка Строка
строка Строка строка
Строка, строка Строка==
строка Строка строка

посоветуйте алгоритм…



Офлайн

#2 Сен. 14, 2013 16:27:11

SoT
Зарегистрирован: 2012-12-12
Сообщения: 68
Репутация: +  4  -
Профиль   Отправить e-mail  

Обрезать строку по пробелам.

Ну например вот так :

#!/usr/bin/python
# -*- coding: utf-8 -*-
s = u"слово1 слово2 слово3 слово4 слово5 слово6 слово7 слово8 слово9"
k = 0
for i in range( len(s) ) :
    if s[i] == u" " :
        k = k + 1
        if k == 3 :
            s = s[:i] + u"\n" + s[(i+1):]
            k = 0
print s

Вызывай из командной строки, у меня работает.
P.s. Символ пробела на символ перевода строки можно заменять с помощью replace, но у меня почему то не получилось

Офлайн

#3 Сен. 14, 2013 16:51:00

Jeck290
От:
Зарегистрирован: 2010-01-03
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Обрезать строку по пробелам.

Да спасибо то что нужно.



Офлайн

#4 Сен. 14, 2013 18:18:44

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Обрезать строку по пробелам.

import re
text = "qwe rty uia sdf ghj kzx cv vb nm gh gh fb hgf"
new_text = re.sub(r'(\S+\s+\S+\s+\S+)\s+', lambda mo: '%s\n' % mo.group(1), text)
print(new_text)

Офлайн

#5 Сен. 14, 2013 22:08:02

SoT
Зарегистрирован: 2012-12-12
Сообщения: 68
Репутация: +  4  -
Профиль   Отправить e-mail  

Обрезать строку по пробелам.

Шикарное решение ! а можно его немного прокомментировать ? я не очень понимаю что принимает mo.group(1)

Офлайн

#6 Сен. 14, 2013 23:19:01

Frog-king
Зарегистрирован: 2012-11-30
Сообщения: 31
Репутация: +  1  -
Профиль   Отправить e-mail  

Обрезать строку по пробелам.

s = 'Строка строка Строка строка Строка строка Строка, строка Строка== строка Строка строка'
s_as_list = s.split(' ') 
for i, index in enumerate(range(3, len(s_as_list), 3)):
    s_as_list.insert(index+i, '\n')
print ' '.join(s_as_list)

Офлайн

#7 Сен. 16, 2013 14:28:36

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

Обрезать строку по пробелам.

dimy44
new_text = re.sub(r'(\S+\s+\S+\s+\S+)\s+', lambda mo: '%s\n' % mo.group(1), text)

>>> import re
>>> 
>>> text = "qwe  rty  uia  sdf  ghj  kzx  cv  vb"
>>> 
>>> new_text = re.sub(r'(\S+\s+\S+\s+\S+)\s+', r'\1\n', text)
>>> 
>>> print(new_text)
qwe  rty  uia
sdf  ghj  kzx
cv  vb
>>> print(repr(new_text))
'qwe  rty  uia\nsdf  ghj  kzx\ncv  vb'
>>>



Отредактировано py.user.next (Сен. 16, 2013 14:28:47)

Офлайн

#8 Сен. 16, 2013 20:00:37

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Обрезать строку по пробелам.

Дельное замечание. Но откуда там пробел в репр-представлении перед новой строкой? У меня нет его (2.6.2)

Отредактировано dimy44 (Сен. 16, 2013 20:02:02)

Офлайн

#9 Сен. 16, 2013 21:15:29

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

Обрезать строку по пробелам.

dimy44
Но откуда там пробел в репр-представлении перед новой строкой?
я продублировал пробелы в исходной строке, чтобы подчеркнуть, что при подстановке заменяется группа пробелов



Отредактировано py.user.next (Сен. 16, 2013 21:15:46)

Офлайн

#10 Сен. 18, 2013 22:21:19

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

Обрезать строку по пробелам.

py.user.next

Я так понимаю вы хотели сказать что нужно сделать вот так?

new_text = re.sub(r'(\S+\s{1}\S+\s{1}\S+)\s{1}', lambda mo: '%s\n' % mo.group(1), text)



Отредактировано Mozart (Сен. 18, 2013 22:21:40)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version