def sanitize_report_list(wxdata: [str],  <EOL>remove_clr_and_skc: bool = True<EOL>) -> ([str], [str], str):  
shear = '<STR_LIT>'<EOL>runway_vis = []<EOL>for i, item in reversed(list(enumerate(wxdata))):<EOL><INDENT>ilen = len(item)<EOL>if is_unknown(item):<EOL><INDENT>wxdata.pop(i)<EOL><DEDENT>elif ilen > <NUM_LIT:4> and item[<NUM_LIT:0>] == '<STR_LIT:R>'and (item[<NUM_LIT:3>] == '<STR_LIT:/>' or item[<NUM_LIT:4>] == '<STR_LIT:/>') and item[<NUM_LIT:1>:<NUM_LIT:3>].isdigit():<EOL><INDENT>runway_vis.append(wxdata.pop(i))<EOL><DEDENT>elif ilen in [<NUM_LIT:4>, <NUM_LIT:6>] and item.startswith('<STR_LIT>'):<EOL><INDENT>wxdata[i] = item[<NUM_LIT:2>:]<EOL><DEDENT>elif i and extra_space_exists(wxdata[i - <NUM_LIT:1>], item):<EOL><INDENT>wxdata[i - <NUM_LIT:1>] += wxdata.pop(i)<EOL><DEDENT>elif item in ITEM_REMV:<EOL><INDENT>wxdata.pop(i)<EOL><DEDENT>elif remove_clr_and_skc and item in ['<STR_LIT>', '<STR_LIT>']:<EOL><INDENT>wxdata.pop(i)<EOL><DEDENT>elif item in ITEM_REPL:<EOL><INDENT>wxdata[i] = ITEM_REPL[item]<EOL><DEDENT>elif ilen == <NUM_LIT:3> and item.startswith('<STR_LIT>') and item[<NUM_LIT:2>].isalpha():<EOL><INDENT>wxdata.pop(i)<EOL><DEDENT>elif ilen > <NUM_LIT:6> and item.startswith('<STR_LIT>') and item[<NUM_LIT:5>] == '<STR_LIT:/>':<EOL><INDENT>shear = wxdata.pop(i).replace('<STR_LIT>', '<STR_LIT>')<EOL><DEDENT>elif ilen > <NUM_LIT:3> and item[-<NUM_LIT:4>:] in VIS_PERMUTATIONS:<EOL><INDENT>wxdata[i] = '<STR_LIT>'<EOL><DEDENT>elif (ilen == <NUM_LIT:6> and item[<NUM_LIT:5>] in ['<STR_LIT>', '<STR_LIT:T>'] and (item[:<NUM_LIT:5>].isdigit() or item.startswith('<STR_LIT>')))or (ilen == <NUM_LIT:9> and item[<NUM_LIT:8>] in ['<STR_LIT>', '<STR_LIT:T>'] and item[<NUM_LIT:5>] == '<STR_LIT>' and (<EOL>item[:<NUM_LIT:5>].isdigit() or item.startswith('<STR_LIT>'))):<EOL><INDENT>wxdata[i] = item[:-<NUM_LIT:1>] + '<STR_LIT>'<EOL><DEDENT>elif ilen > <NUM_LIT:16> and len(item.split('<STR_LIT:/>')) == <NUM_LIT:3>:<EOL><INDENT>if item.startswith('<STR_LIT>') and '<STR_LIT>' not in item:<EOL><INDENT>tn_index = item.find('<STR_LIT>')<EOL>wxdata.insert(i + <NUM_LIT:1>, item[:tn_index])<EOL>wxdata[i] = item[tn_index:]<EOL><DEDENT>elif item.startswith('<STR_LIT>') and item.find('<STR_LIT>') != -<NUM_LIT:1>:<EOL><INDENT>tx_index = item.find('<STR_LIT>')<EOL>wxdata.insert(i + <NUM_LIT:1>, item[:tx_index])<EOL>wxdata[i] = item[tx_index:]<EOL><DEDENT><DEDENT><DEDENT>return wxdata, runway_vis, shear<EOL>
Sanitize wxData

We can remove and identify "one-off" elements and fix other issues before parsing a line

We also return the runway visibility and wind shear since they are very easy to recognize
and their location in the report is non-standard