Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python从文本中搜索和提取值_Python - Fatal编程技术网

使用python从文本中搜索和提取值

使用python从文本中搜索和提取值,python,Python,给定以下Jtree内存段: print (resptext) SENT: Ukern command: show jtree 0 memory Jtree memory segment 0 (Context: 0x45bdc9c8) ------------------------------------------- Memory Statistics: 16777216 bytes total 7591528 bytes used 9181968 bytes ava

给定以下
Jtree内存段

print (resptext)

SENT: Ukern command: show jtree 0 memory
Jtree memory segment 0 (Context: 0x45bdc9c8)

-------------------------------------------
Memory Statistics:
   16777216 bytes total
    7591528 bytes used
    9181968 bytes available (9155584 bytes from free pages)
       3528 bytes wasted
        192 bytes unusable
      32768 pages total
      14751 pages used (2571 pages used in page alloc)
        135 pages partially used
      17882 pages free (max contiguous = 17846)

Jtree memory segment 1 (Context: 0x45c5ed20)
Memory Statistics:
   16777216 bytes total
   13462008 bytes used
    3304560 bytes available (3281408 bytes from free pages)
       2432 bytes wasted
       8216 bytes unusable
      32768 pages total
      26220 pages used (8970 pages used in page alloc)
        139 pages partially used
       6409 pages free (max contiguous = 6409)


Context: 0x43bd2958
目标:
  • 从每个段中提取
    总字节数
    使用的字节数
  • 计算段0和段1的内存使用百分比:
    • 段0=已使用字节/可用字节=45.45%
    • 段_1=已使用字节/可用字节=80.24%
  • 当前状态:
    • 我已设法提取并打印这些值,但无法对段0内存利用率和段1执行计算操作

    • 迄今为止的产出:


    我可以保持这个简单。筛选行中您关心的值,然后将内容压缩在一起:

    segment_lines = (line for line in resptext if "Jtree memory segment" in line)
    used_lines = (line for line in resptext if "bytes used" in line)
    avail_lines = (line for line in resptext if "bytes available" in line)
    
    segment_values = (int(line.split(" ")[3]) for line in segment_lines)
    used_values = (int(line.split(" ")[0]) for line in used_lines)
    avail_values = (int(line.split(" ")[0]) for line in avail_lines)
    
    segment_values = {
        segment: {"used": used, "available": avail}
        for segment, used, avail in zip(
            segment_values, used_values, avail_values
        )
    }
    

    为什么不使用正则表达式呢?这更简单!你可以测试你的正则表达式。我处理过日志数据,正则表达式对我帮助很大。

    阐明了问题的目的
    7591528
    13462008
    
    segment_lines = (line for line in resptext if "Jtree memory segment" in line)
    used_lines = (line for line in resptext if "bytes used" in line)
    avail_lines = (line for line in resptext if "bytes available" in line)
    
    segment_values = (int(line.split(" ")[3]) for line in segment_lines)
    used_values = (int(line.split(" ")[0]) for line in used_lines)
    avail_values = (int(line.split(" ")[0]) for line in avail_lines)
    
    segment_values = {
        segment: {"used": used, "available": avail}
        for segment, used, avail in zip(
            segment_values, used_values, avail_values
        )
    }