python - How to extract specific words from a list as the list length changes? -
let's assume have sample of following strings:
- string = 'http/1.1 abc-ad-sd-00.sad.sdsd.der.net (server/1.2 [dsddsf did:t yy p ss]), http/1.1 asc-ad-sd-11.sad.sdsd.der.net (server/1.2 [gfef srfw:t reri pss ])'
- string1 = 'http/1.1 abc-ad-sd-01.sad.sdsd.der.net (server/1.2 [dsddsf f u did:t yy p ss]), http/1.1 asc-ad-sd-13.sad.sdsd.der.net (server/1.2 [sff srfw:t reri pss ])'
- string2 = 'http/1.1 abc-ad-sd-002.sad.sdsd.der.net (server/1.2 [dsddsf did:t yy p ss]), http/1.1 asc-ad-sd-14.sad.sdsd.der.net (server/1.2 [rts f srfw:t reri pss ])'
- string3 = 'http/1.1 abc-ad-sd-03.sad.sdsd.der.net (server/1.2 [dsddsf did:t yy p ss]), http/1.1 asc-ad-sd-15.sad.sdsd.der.net (server/1.2 [tttts t srfw:t reri pss ])'
here's did bold strings:
if name == 'via': name = “id1” string = header_line.split(' ') b = (string[2].split('.')) value = b[0] headers[name] = value #----------# name_1 = “id2” string = header_line.split(' ') b_1 = (string[9].split('.')) value_1 = b_1[0] headers[name_1] = value_1 #-----# name_2 = “id3” string = header_line.split(' ') b_2 = (string[11:]) value_2 = ''.join(b_2) headers[name_2] = value_2 #----#
the problem works in situations. can see, there 3 different strings getting bold strings index doesn't quite work. ofcourse, not complete code these strings stored in dict list. example: initial output looks this:
[{‘item1’: '10574', 'item2’: '69.241.51.134', ‘via’: ‘http/1.1 abc-ad-sd-00.sad.sdsd.der.net (server/1.2 [dsddsf did:t yy p ss]), http/1.1 asc-ad-sd-11.sad.sdsd.der.net (server/1.2 [tttts srfw:t reri pss ]))’, ‘item4’: ’22’, 'http response': ['http/1.1 200 ok\r\n']}, {…}, {…}]
and want different output based on parsed values response above.
[{‘item1’: '10574', 'item2’: '69.241.51.134', ‘id3’: 'tttts srfw:t reri pss', ‘item4’: ’22’, ‘id2’: ‘asc-ad-sd-11', 'http response': ['http/1.1 200 ok\r\n'], ‘id1’: ‘abc-ad-sd-00’}, {…}, {…}]
so can see, i've bunch of dicts inside list , key 'via', want value parsed different substrings want , store them new key values. i've done in code.
update: responses. i've clarified question. response, value id1 , id2 works value inside [] isn't working because "tttts" won't same string in every response.
another update: thank help!! using everyone's response, tweaked code little , figured out how values.
in opinionm can use regex substring.
import re pattern1 = r'\w+-\w+-\w+-\d+' pattern2 = r'\[tttts .+\]' #s string checking #pattern 1 find substring abc-ad-sd-00 re.findall(pattern1,s) #pattern 2 find substring [tttts t srfw:t reri pss ] re.findall(pattern2,s)
example:
s = 'http/1.1 abc-ad-sd-00.sad.sdsd.der.net (server/1.2 [dsddsf did:t yy p ss]), http/1.1 asc-ad-sd-11.sad.sdsd.der.net (server/1.2 [tttts srfw:t reri pss ])' re.findall(r'\[tttts .+\]',s) ['[tttts srfw:t reri pss ]'] re.findall(r'\w+-\w+-\w+-\d+',s) ['abc-ad-sd-00', 'asc-ad-sd-11']
Comments
Post a Comment