Я новичок в Python / программировании в целом и пытаюсь построить statsd для прокси opentsdb на основе prostheus statsd proxy в go.
Я пытаюсь создать шаблон строки, подобный следующему:
label_name = "${1}_${2}_${3}_${6}"
Затем, используя вышеуказанный формат label = string template, замените содержимое 1,2,3 и 7 на re.match.groups другой строки. Я думал, что смогу сделать это со строками Template.safe_substitute и небольшим циклом for, чтобы превратить группы в словарь:
...: label_match_dict = {}
...: for i in range(len(input_match.groups())):
...: label_match_dict[str(i+1)] = input_match.groups()[i]
Тем не менее, у меня возникли проблемы, потому что это выглядит как string.Template () ищет [_a-z][_a-zA-Z0-9]
, который не будет соответствовать моему диктату {1: "blue", 2: "green", 3: "red", 4: "yellow"}
. Теперь я полностью потерян и чувствую, что должен быть чистый способ сделать это вместо моей садовой дорожки.
Скажем, у меня есть показатель statsd, например:
connstats_by.vip.nested._Common_Domain.89.44.250.117.conncount:40|g
и строка регулярного выражения, такая как , поэтому :
re.compile('connstats_by\\.vip\\.nested\\.([^.]*)\\.([^.]*)\\.([^.]*)\\.([^.]*)\\.([^.]*)\\.([^\:]*)(?:\:)([^\|]*)(?:\|)([^\n]*)')
Что после вышеприведенного цикла for дает мне:
{ 1: "_Primary_Domain",
2: "192",
3: "168",
4: "1",
5: "117",
6: "conncount",
7: "40",
8: "g" }
Кажется, я просто не могу обернуть свой мозг тем, что заменил элементы шаблона членами dict без действительно грубого вида вложенного цикла. Я чувствую, что иду по неверному пути. Я надеюсь, что кто-то здесь может указать мне на более питоническое направление, которое я смогу понять через 3 месяца.
Заранее спасибо за любую помощь.