Регулярное выражение для заданной фразы c с константной строкой - PullRequest
0 голосов
/ 31 января 2020

Глядя в нижнем регистре указанную c фразу в моей строке python с использованием регулярного выражения.

В настоящее время я запускаю для l oop, чтобы выполнить длинный ряд строк следующего формата , См. Приведенный ниже код:

import re
for x in range(len(out_lines)):
    test = str(out_lines[x])
    out_lines[x] = re.sub(r"(name='([.*?])')", lambda m: m.group(1).lower(), test)

Переменная out_lines представляет собой список строк в том же формате, как показано ниже:

<column caption='Subordination' datatype='string' name='[SUBORDINATE]' role='dimension' type='nominal' />
<column caption='Issuer' datatype='string' name='[ISSUER_NAME]' role='dimension' type='nominal' />

Идеальный результат для строки в скобках например, name='[*str*]' аргумент, который должен быть прерван.

<column caption='Subordination' datatype='string' name='[subordinate]' role='dimension' type='nominal' />
<column caption='Issuer' datatype='string' name='[issuer_name]' role='dimension' type='nominal' />

Но вся строка не может быть в нижнем регистре, потому что другие аргументы могли иметь заглавные буквы, и они должны остаться ...

Я считаю, что моя проблема связана с неправильным регулярным выражением выражение ...

1 Ответ

1 голос
/ 31 января 2020

Вам необходимо снять квадратные скобки в регулярном выражении, поскольку квадратные скобки имеют особое значение.

out_lines[x] = re.sub(r"name='\[(.*?)\]'", lambda m: "name='[" + m.group(1).lower() + "]'", test)

И вам не нужна группа захвата вокруг всего регулярного выражения, только вокруг части внутри скобки.

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