Уведомления

Jabber-конференция сообщества: pythonua@conference.jabber.ru

#1 Апрель 11, 2007 08:23:38

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

Обрезание строки.

Здравствуйте
Есть некоторый текст, который необходимо обрезать (начиная 400 символа искать вхождение “. ” - точка пробел).
Вот что я написал

MAX_CHAR=400
def l_desc(list):
“”“
Trim description (desc) do MAX_CHAR .
”“”
st = string.find(list ,“. ”, MAX_CHAR)
if st>MAX_CHAR:
list = list
return list


Но это не всегда срабатывает. Если можно подскажите как правильнее сделать



Отредактировано (Апрель 11, 2007 08:35:54)

Офлайн

#2 Апрель 11, 2007 08:46:23

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

Обрезание строки.

1) не используй имена стандартных классов как имена переменных - например list
2) модуль string вроде уже устарел

s=' '.join([str(x) for x in xrange(789)])
s+='. ne nuzhno'
def l_desc1(str1, MAX_CHAR=400):
    position = str1.find('. ', MAX_CHAR)
    if position>-1:
        return str1[:position]
print l_desc1(s)
если применить ФП можно записать ещё короче - в две строки



Офлайн

#3 Апрель 11, 2007 08:54:49

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

Обрезание строки.

Что есть ФП и где можно почитать ?



Офлайн

#4 Апрель 11, 2007 09:26:35

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

Обрезание строки.

Офлайн

#5 Апрель 11, 2007 10:09:42

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

Обрезание строки.

Что-то вроде этого:

test = lambda x: x

Это конечно здорово, но у меня полная функция выглядит так

def l_desc(desc):
“”“
# Trim description (desc) do MAX_LITLE_DESC_CHAR .
# Warning: This module is not working correctly ! Need edit !
”“”
i = 0
try:
while i<desc.count():
st = string.find(desc.desc ,“. ”, MAX_LITLE_DESC_CHAR)
if st>-1:
desc.desc = “%s…” % (desc.desc)
i = i + 1
except TypeError:
return desc
return desc


Сейчас попробую заменить на:

l_desc = map(lambda x: x,x.count())



Отредактировано (Апрель 11, 2007 10:14:19)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version