Форум сайта python.su
Здравствуйте,
Каким образом можно склеить, к примеру, 4 или более подряд идущих буквы если таковые имеются в тексте. Версия Python 2.5.
К примеру есть текст:
Привет форумчане, рад вас всех в и д е т ь на этом форуме.
Нужно получить на выходе:
Привет форумчане, рад вас всех видеть на этом форуме.
Офлайн
Не понял, тебе надо убрать пппооодддрядд идущие буквы или пробелы внутри с л о в а? Если второе, то как ты собираешься отделять от таких слов стоящие рядом с ними союзы и другие однобуквенные слова?
Офлайн
pasaranax, не важно на союзы, главное склеить. Не убрать пппооодддрядд идущие буквы, а “убрать” пробелы внутри с л о в а.
Офлайн
Если нужно тупо удалить все пробелы из строки, то в чём проблема?
str = "q w r t e"
str = str.replace(" ", "")
Офлайн
Вот, что у меня получилось:
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(" ", " ")
Офлайн
Ed +1
а я себе регулярками весь мозг изъел )
Офлайн
похоже придётся еще и правописание проверить…
Офлайн
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)
Офлайн
по этой причине я убрал декодер и у меня нормально отработало…
>>> line = "A привет ф о р у м ч а н е , рад и вас всех в и д е т ь на э т о м форуме."
>>> result = ''
>>> for part in line.split():
... if len(part) > 1:
... part = " %s " % part
... result = "%s%s" % (result, part)
...
>>> print result.replace(" ", " ")
A привет форумчане, рад и вас всех видеть на этом форуме.
>>>
Офлайн
Как-то так:
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)
Давольно грамоздко, но работает
Офлайн