繁体   English   中英

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

[英]search and extracting values from text using python

给定以下Jtree memory segment

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

目标:

  1. 从每个段中提取bytes totalbytes used bytes total
  2. 计算段 0 和段 1 的内存使用百分比:
    • segment_0 = 已用字节数/可用字节数 = 45.45%
    • segment_1 = 已用字节数/可用字节数 = 80.24%
resptext = resptext.strip().split('\n')
resptext = [s.strip() for s in resptext]
for line in resptext:
    line = line.strip()
    if 'bytes used' in line:
        words = line.partition(" bytes")
        bytes_used = words[0]
        print (bytes_used)

当前状态:

  • 我已经设法提取并打印值,但我无法对segment_0 内存利用率和segment_1 进行计算操作

  • 到目前为止的输出:

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
    )
}

为什么不使用正则表达式? 更直接! 你可以在这里测试你的正则表达式。 我处理过日志数据,正则表达式有很大帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM