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

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -