Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Модуль re.Как оформить функцию?


Автор: Unlocker 6.2.2008, 11:27
хочу написать функцию, которая бы очищала строку от мусора для дальнейшего лексемного анализа:
Код

import re
def fltr(string, num = 2):
    if (num == 0):
        filt = r"""(".*")"""
    elif (num == 1):
        filt = r"""(//.)"""
    else:
        filt = r"""([^()[]])"""
    pattern = re.compile(filt, re.DOTALL | re.VERBOSE | re.IGNORECASE)
    pattern.sub('', string)
    return string

проблема в том, что в режиме интерпритатора выполнение очистки происходит нормально, а при попытке записать данный код в функцию код не работает. В чем дело - сам не могу разобраться.
проверка дебаггером показала, что шаблон компилируется нормально. Может дело в том, что строка передается в качестве формального параметра по ссылке?Как  исправить данное недоразумение?
Заранее благодарен всем откликнувшимся. smile 

Автор: Daevaorn 6.2.2008, 11:36
Цитата

sub(    pattern, repl, string[, count])
   Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl. If the pattern isn't found, string is returned unchanged. repl can be a string or a function; if it is a string, any backslash escapes in it are processed. That is, "\n" is converted to a single newline character, "\r" is converted to a linefeed, and so forth. Unknown escapes such as "\j" are left alone. Backreferences, such as "\6", are replaced with the substring matched by group 6 in the pattern. 

Автор: Unlocker 6.2.2008, 11:42
Daevaorn, а по-русски коммент приложить не забыл?Приложи пояснения.
Справочник у меня и на русском есть.Мне интересно почему в этом контексте код неработоспособен?
На свой вопрос я ответа так и не получил.
Тема остается открытой.

Автор: Void 6.2.2008, 11:46
Unlocker, строки в Питоне неизменяемые. Любые операции со строками возвращают новую строку, а не модифицируют старую. Ещё вопросы есть?

Автор: Unlocker 6.2.2008, 11:51
Void, вопросов больше не имею. Спасибо за помощь. 
Пошел писать дальше...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)