第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用標(biāo)題將文本解析為 python 中的 csv-F5 LTM

使用標(biāo)題將文本解析為 python 中的 csv-F5 LTM

波斯汪 2023-05-16 16:41:08
我正在嘗試審核大量 f5 配置,但我很難解析下面的數(shù)據(jù),我嘗試修改下面的代碼,但它拋出了一個(gè)錯(cuò)誤。我是 python 的完全菜鳥,這是我第一次自動(dòng)化這樣的任務(wù)。謝謝數(shù)據(jù):Ltm::Virtual Server: acme.com  Availability     : offline  State            : enabled  Reason           : The children pool member(s) are down  Destination      : 10.1.1.2:80Ltm::Virtual Server: foo.com  Availability     : available  State            : enabled  Reason           : The virtual server is available  Destination      : 10.100.11.15:80Ltm::Virtual Server: hamhamspam.com  Availability     : offline  State            : enabled  Reason           : The children pool member(s) are down  Destination      : 10.200.8.17:443預(yù)期產(chǎn)出Virtual Server  Availability    State   Reason                                  Destinationacme.com        offline         enabled The children pool member(s) are down    10.1.1.2:80foo.com         available       enabled The virtual server is available         10.100.11.15:80hamhamspam.com  offline         enabled The children pool member(s) are down    10.200.8.17:443import csvdef convert_to_dict(line, header):    d = {}    for cell in header:        d[cell] = ''    row = line.strip().split(':')    for cell in row:        if cell:            key, value = cell.split(':')            d[key] = value    return ddef extract_fields(logfile):    fields = set()    for line in logfile:        row = line.strip().split(':')        for cell in row:            if cell:                key, value = cell.split(':')                fields.add(key)    logfile.seek(0)    return sorted(list(fields))if __name__ == '__main__':    with open('ltm.txt', 'r') as logfile:        with open('report.csv', 'wb') as csvfile:            csvwriter = csv.writer(csvfile)            header = extract_fields(logfile)            csvwriter.writerow(header)            for line in logfile:                d = convert_to_dict(line, header)                csvwriter.writerow([d[cell] for cell in header])
查看完整描述

2 回答

?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊

工作代碼如下:


lines_data = []

with open('ltm.txt', 'r') as logfile:

    pairs = {}

    for line in logfile:

        new_entry = False

        if line[0].isspace():

          fields = line.strip().split(':')

        else:

          double_colon_idx = line.find('::')

          line = line[double_colon_idx+2:]

          new_entry = True

        fields = line.strip().split(':')

        if new_entry and pairs:

          lines_data.append(pairs)

          pairs = {}

        if len(fields) >= 2:

          key = fields[0]

          value = fields[1]

          pairs[key.strip()] = value.strip()

    lines_data.append(pairs)

headers = lines_data[0].keys()

header_str = ','.join(headers)

with open('report.csv','w') as out:

  out.write(header_str + '\n')

  for entry in lines_data:

    _line = []

    for key in headers:

      _line.append(entry[key])

    out.write(','.join(_line) + '\n')

ltm.txt文件


Ltm::Virtual Server: acme.com

  Availability     : offline

  State            : enabled

  Reason           : The children pool member(s) are down

  Destination      : 10.1.1.2:80

Ltm::Virtual Server: foo.com

  Availability     : available

  State            : enabled

  Reason           : The virtual server is available

  Destination      : 10.100.11.15:80

Ltm::Virtual Server: hamhamspam.com

  Availability     : offline

  State            : enabled

  Reason           : The children pool member(s) are down

  Destination      : 10.200.8.17:443

報(bào)告.csv


Virtual Server,Availability,State,Reason,Destination

acme.com,offline,enabled,The children pool member(s) are down,10.1.1.2

foo.com,available,enabled,The virtual server is available,10.100.11.15

hamhamspam.com,offline,enabled,The children pool member(s) are down,10.200.8.17


查看完整回答
反對(duì) 回復(fù) 2023-05-16
?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

您的代碼中有不同的問(wèn)題。


您嘗試拆分':',而其中一個(gè)鍵確實(shí)包含冒號(hào)。你應(yīng)該分開(kāi)': '


您始終嘗試拆分兩次,第一次是行(正確),然后是每個(gè)字段(錯(cuò)誤)。您應(yīng)該在拆分后刪除一個(gè)split并剝離:


 ...

 for line in logfile:

     row = line.split(': ')

     key = row[0].strip()

     fields.add(key)

其他功能相同


您分別處理每一行,而以空格字符開(kāi)頭的行是續(xù)行。你應(yīng)該只提取一對(duì)key, value并返回它:


 def extract_pair(line):

     key, value = line.split(': ')

     return key.strip(), value.strip()

然后在你的主要部分,你必須處理續(xù)行


     ...

     d = None

     for line in logfile:

         key, value = extract_pair(line)

         if line[0].isspace():

             d[key] = value       # continuation line: update d

         else:

             if d is not None:    # write full previous row

                 csvwriter.writerow([d[cell] for cell in header])

             d = {key: value}     # initial line: reset d

     if d is not None:            # process last row

         csvwriter.writerow([d[cell] for cell in header])


查看完整回答
反對(duì) 回復(fù) 2023-05-16
  • 2 回答
  • 0 關(guān)注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)