• Codeby web-security - Курс "Тестирование Веб-Приложений на проникновение с нуля" от команды codeby. Общая теория, подготовка рабочего окружения, пассивный фазинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...

  • Мобильный клиент нашего форума для Android гаджетов доступен в Google Play Market по этой ссылке. Клиент можно скачать с нашего форума по этой ссылке. Последняя версия МК в нашем телеграм канале вот здесь

Проблема регулярные выражения, изменить по шаблону

~localhost

Well-known member
30.10.2017
151
45
#1
Привет). написал скрип чтобы из документа по шаблону нужные мне строки и записывал в новый документ. но проблема в том что он записывает в таком виде 5['| 10 198.252 '] а нужно привести к такому виду 5 = 100 198.252 и после второго числа дописывал 0.

Пробовал снова открывать созданный питоном документ, и использовать re.sub но с ним что то у меня не получилось. Подскажите что можно использовать или хотя бы в нужное направление)
[doublepost=1514141416,1514041945][/doublepost]Решение данной проблемы:
И так я написал небольшой с крипт который с помощью регулярных выражений по заднному шаблону ищу нужные мне совпадения ищу с помощью re.findall() как стало известно он возвращает список с одним элементом ( не важно сколько у вас там всего) если просто вывести на экран то получим следующее
[ ' то что мы нашли ' ] в мое случае ['| 10 198.252 ']
а что если вам так же как и мне не нужны квадратные скобки и одинарные кавычки, а еще вы хотите вставить в по середине найденного результата что то свое, как в моем случае. Нам поможет так называем срез списка (list indexing) он вывод на экран индексы тех элементов которые мы укажем в квадратных скобка [ a : b : c ]
где a - первый индекс b - последний с - шаг
но в моем случае индекс один по этому будет выглядеть так [0] [1:3] т.е в первых квадратных скобках мы указывает первый элемент он же единственный а во вторых мы его уже разбиваем.
вот как было у меня:

Код:
import re
Создал шаблон по которому осуществляется поиск. для записи в шаблон своей переменной используйте re.escape()

search = r"\|\s+" + re.escape(str(i)) + r"\s+\w+\.\w+[|,\s]"

По заданном шаблону ищем все совпадения в тексте
result = re.findall(search, mytext)
на выходу получал это
['|10 198.252 ']   там порядка 300+ таких строк
Мне это дело надо было привести к виду
1   100 = 198.252 ,  где 1 это номер по порядку, + к второму число добавляем 0 и после него ставим равно
В итоге на выходе вот такая строка:
str (y) + ' = ' + result[0][1:6] + '0' + result[0][6:17] + '\n'

где y это переменная которая считает номер по порядку
Может что то дополните или поправите меня, я буду признателен т.к. стаж программирования у меня 1 неделя))
 

Tayler

Active member
08.07.2017
30
19
#2
Python:
mytext = "5['| 10 198.252 ']"
result = mytext.replace("['|", '')  # Убираем ['|
result = result.split(' ')  # Разбиваем по пробелам,теперь у нас 4 объекта в переменной result,4-ый - это '],мы его просто не трогаем
result = result[0] + ' = ' + result[1] + '0 ' + result[2]  # Клеим
print(result) # 5 = 100 198.252
 
Вверх Снизу