RegEx, чтобы найти все индексы для уникального символа в 3-символьной подстроке - PullRequest
0 голосов
/ 24 января 2020

Я получаю индексы шаблона из двух байтов, используя finditer.

my_val = [0, 1]
[(m.start(0), m.end(0)) for m in re.finditer(myval, content)]

Но теперь мне также нужны уникальные значения / местоположения, где два первых байта совпадают с my_val, но 3-е значение уникально. то есть в шаблоне, подобном: 013 234 523 015 68 012 9 015 014 012 013 013 012 012 мне нужно 013, 015, 012 и 014, игнорируя дублирующиеся значения.

1 Ответ

0 голосов
/ 24 января 2020

Сначала шаблон должен быть байтами, обратите внимание на список.

Затем, Вы можете использовать dict для хранения уже найденных совпадений:

content = '0120150160150132468451018'
content = bytes(map(int, content))
my_val = b'\x00\x01.'
d = dict()
for m in re.finditer(my_val, content):
    k = m.group(0)
    if k not in d :
        d[m.group(0)] = (m.start(0), m.end(0))
res = d.values()

Примечание: для приведения bytes до list из int и list из int до bytes:

>>> list(b'\x00\x03\xa2')
[0, 3, 162]

>>> bytes([0, 3, 162])
b'\x00\x03\xa2'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...