Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 4, 2010 15:54:55

pyOut
От:
Зарегистрирован: 2006-07-16
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

Склейка нескольких подряд идущих букв

Здравствуйте,

Каким образом можно склеить, к примеру, 4 или более подряд идущих буквы если таковые имеются в тексте. Версия Python 2.5.

К примеру есть текст:
Привет форумчане, рад вас всех в и д е т ь на этом форуме.

Нужно получить на выходе:
Привет форумчане, рад вас всех видеть на этом форуме.



Офлайн

#2 Янв. 4, 2010 16:53:38

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

Склейка нескольких подряд идущих букв

Не понял, тебе надо убрать пппооодддрядд идущие буквы или пробелы внутри с л о в а? Если второе, то как ты собираешься отделять от таких слов стоящие рядом с ними союзы и другие однобуквенные слова?



Офлайн

#3 Янв. 4, 2010 17:05:06

pyOut
От:
Зарегистрирован: 2006-07-16
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

Склейка нескольких подряд идущих букв

pasaranax, не важно на союзы, главное склеить. Не убрать пппооодддрядд идущие буквы, а “убрать” пробелы внутри с л о в а.



Офлайн

#4 Янв. 4, 2010 22:01:54

Evgen
От:
Зарегистрирован: 2007-01-18
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Склейка нескольких подряд идущих букв

Если нужно тупо удалить все пробелы из строки, то в чём проблема?

str = "q w r t e"
str = str.replace(" ", "")



Офлайн

#5 Янв. 4, 2010 22:42:04

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Склейка нескольких подряд идущих букв

Вот, что у меня получилось:

line = "A привет ф о р у м ч а н е , рад и вас всех в и д е т ь на э т о м форуме.".decode("utf-8")

result = ''
for part in line.split():
if len(part) > 1:
part = " %s " % part
result = "%s%s" % (result, part)

print result.replace(" ", " ")
Выводит это: “A привет форумчане, рад и вас всех видеть на этом форуме.”

Если союз будет рядом с таким растянутым словом, то его прилепит к слову.



Офлайн

#6 Янв. 4, 2010 22:53:13

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

Склейка нескольких подряд идущих букв

Ed +1
а я себе регулярками весь мозг изъел )



Офлайн

#7 Янв. 4, 2010 22:54:44

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Склейка нескольких подряд идущих букв

похоже придётся еще и правописание проверить…

Офлайн

#8 Янв. 4, 2010 22:55:52

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Склейка нескольких подряд идущих букв

Ed ты красавчег если честно мне нравится твой вариант :), правда у меня ошибку выдаёт :)

Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> line = "A привет ф о р у м ч а н е , рад и вас всех в и д е т ь на э т о м форуме.".decode("utf-8")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "E:\python264\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xaf in position 2: unexpected code byte
>>>
на юниксах так же:
> python
Python 2.5.2 (r252:60911, Dec 12 2008, 00:04:19)
[GCC 4.2.1 20070719 [FreeBSD]] on freebsd7
Type "help", "copyright", "credits" or "license" for more information.
>>> line = "A привет ф о р у м ч а н е , рад и вас всех в и д е т ь на э т о м форуме.".decode("utf-8")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.5/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 2-3: invalid data
>>>

Отредактировано (Янв. 4, 2010 23:06:22)

Офлайн

#9 Янв. 4, 2010 23:08:56

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Склейка нескольких подряд идущих букв

по этой причине я убрал декодер и у меня нормально отработало…

>>> line = "A привет ф о р у м ч а н е , рад и вас всех в и д е т ь на э т о м форуме."
>>> result = ''
>>> for part in line.split():
... if len(part) > 1:
... part = " %s " % part
... result = "%s%s" % (result, part)
...
>>> print result.replace(" ", " ")
A привет форумчане, рад и вас всех видеть на этом форуме.
>>>

Офлайн

#10 Янв. 5, 2010 00:16:31

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

Склейка нескольких подряд идущих букв

Как-то так:

str = ‘П р и в е т форумчане, рад в а с всех в и д е т ь на этом ф о р у м е .’
lim = 3
char_len = len('ф')

b =
buf =
for i in str.split():
if len(i) > char_len:
if 0 < len(buf) < lim:
b.extend(buf)
elif len(buf) >= lim:
b.append(''.join(buf))
buf =
b.append(i)
else:
buf.append(i)
else:
if len(buf) >= lim:
b.append(''.join(buf))
else:
b.extend(buf)

print str
print ‘ ’.join(b)

Давольно грамоздко, но работает



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version