Регулярное выражение Python для поиска и изменения положения слов - PullRequest
0 голосов
/ 16 февраля 2019

решено


Раньше я использовал консоль console.snips.ai для создания и обучения своего помощника, но теперь я хочу запустить его локально бездругие функции и необходимо изменить формат экспортируемого файла, который дает вам консоль.Его нужно изменить с: how tall is [Bill Gates](queryObject) [uncle](relations) на how tall is [queryObject](Bill Gates) [relations](uncle), и тогда его можно легко перевести в необходимый формат yaml.

До сих пор мне удавалось перевернуть тип скобок, окружающих сущность - queryObjectи пример сущности Bill Gates с некоторым очень длинным и вытянутым кодом ниже, но я изо всех сил пытаюсь перевернуть позицию (Bill Gates) и [queryObject] с ближайшей, так что Bill Gates и queryObject поменяются местами и то же самое сrelations и uncle

string_ = "how tall is [Bill Gates](queryObject) [uncle](relations)"

nStr = list(string_)

for i , char in enumerate(nStr):

if char == "[":

    nStr[i] = "{"

if char == "]":

    nStr[i] = "}"

if char == "(":

    nStr[i] = "["

if char == ")":

   nStr[i] = "]"

for j , char in enumerate(nStr):

    if char == "{":

        nStr[j] = "("

    if char == "}":

        nStr[j] = ")"

new = ''.join(nStr)

print(new)

Таким образом, это успешно превращает how tall is [Bill Gates](queryObject) [uncle](relations) в how tall is (Bill Gates)[queryObject] (uncle)[relations].

Но как мне перевернуть позиции () с помощью []

ОБНОВЛЕНО

ЭТО ТО, ЧТО ПРОИСХОДИТ СЕЙЧАС

enter image description here

Ответы [ 2 ]

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

Ссылки: регулярное выражение, соответствующее любому символу, включая пробелы

Код:

import re
new = 'how tall is [Bill Gates](queryObject) [uncle](relations)'
result = (re.sub(r'(\[.*?\])(\(.*?\))', r'\2\1', new))
print(result)

Изменится:

how tall is [Bill Gates](queryObject) [uncle](relations)

На:

how tall is (queryObject)[Bill Gates] (relations)[uncle]
0 голосов
/ 16 февраля 2019

Использовать re.sub() с обратной ссылкой:

import re

s = 'how tall is [Bill Gates](queryObject) [uncle](relations)'

result = re.sub(r'\[(.*?)\]\((.*?)\)', r'[\2](\1)', s)

# how tall is [queryObject](Bill Gates) [relations](uncle)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...