Применить список регулярных выражений в списке Python - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть фрейм данных, в котором столбец txt содержит список.Я хочу очистить столбец txt с помощью функции clean_text ().

data = {'value':['abc.txt', 'cda.txt'], 'txt':['[''2019/01/31-11:56:23.288258 1886     7F0ED4CDC704     asfasnfs: remove datepart'']',
                                               '[''2019/02/01-11:56:23.288258 1886     7F0ED4CDC704     asfasnfs: remove datepart'']']}
df = pandas.DataFrame(data=data)

def clean_text(text):
    """
    :param text:  it is the plain text
    :return: cleaned text
    """
    patterns = [r"^{53}",
                r"[A-Za-z]+[\d]+[\w]*|[\d]+[A-Za-z]+[\w]*",
                r"[-=/':,?${}\[\]-_()>.~" ";+]"]

    for p in patterns:
        text = re.sub(p, '', text)

    return text

Мое решение :

df['txt'] = df['txt'].apply(lambda x: clean_text(x))

Но я получаю ошибку ниже: Ошибка

sre_constants.error: nothing to repeat at position 1

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Виновником является первый шаблон из списка - r"^{53}".Он гласит: ^ - соответствует началу строки, а затем {53} повторяет предыдущий символ или группу 53 раза.Подождите ... но нет другого символа, кроме ^, который нельзя повторить!В самом деле.Добавьте символ, которому вы хотите соответствовать 53 повторения.Или, если хотите, дословно сопоставьте последовательность {53}, например, используя re.escape.

0 голосов
/ 10 февраля 2019

^{53} не является допустимым регулярным выражением, поскольку повторителю {53} должен предшествовать символ или шаблон, который может повторяться.Если вы хотите, чтобы он проверял строку длиной не менее 53 символов, вы можете использовать следующий шаблон:

^.{53}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...