前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python解析文本时常用的几个函数

Python解析文本时常用的几个函数

作者头像
AsiaYe
发布2019-12-10 16:31:15
5490
发布2019-12-10 16:31:15
举报
文章被收录于专栏:DBA随笔DBA随笔DBA随笔

//

Python解析文本时常用的几个函数

//

今天在看监控信息采集的一个脚本,这个脚本是之前的同事写的,我们知道,监控项一般有很多,就拿MySQL来说,数据库的存活、buffer_pool大小、TPS、QPS、主从复制延迟、IO线程状态、SQL线程状态等等、要实现这些功能,避免不了要对一些SQL得到的文本进行解析,所以这个Python脚本里面用到了很多字符处理的函数,我大概理了一下,一些重要的记了记,发现小知识点还挺多的,一起看看吧。

1、seek()方法

该方法用于移动文件读取指针到指定位置

f_meminfo = open("/proc/meminfo", "r")
f_meminfo.seek(0)

打开/proc/meminfo文件,将文件读取指针移动到最开始的位置。

2、match()方法

从名字不难看出,他是用来进行匹配的函数,先看看/proc/meminfo中的内容:

[root@  ~]# cat /proc/meminfo 
MemTotal:        8045616 kB
MemFree:          135380 kB
Buffers:          149000 kB
Cached:          1550080 kB
SwapCached:        67516 kB
Active:          1504756 kB

可以看到,都是应为单词+冒号+空格+数字+空格+kb的形式,可以用如下方式进行匹配。

for line in f_meminfo:
  m = re.match("(\w+):\s+(\d+)\s+(\w+)", line)

在某一行匹配如下格式的内容:

非特殊字符+:+空格+数字+空格+非特殊字符

eg:

memtotal: 1000 kb

这种类型的开头

其中:

\w匹配非特殊字符,即a~z,A~Z,0~9以及_和汉字

\s匹配空白,空格,tab键

还有其他的一些匹配方法

\D匹配非数字

\W匹配特殊字符,例如&,¥等

细心的朋友可能看到了,上面的match方法中,还有包含括号的内容,这里的括号是干什么用的呢?其实是为了分组用的,这里我们再介绍第三个函数。

3、group()方法

for line in f_meminfo:
  m = re.match("(\w+):\s+(\d+)\s+(\w+)", line)
  if m:
    if m.group().lower() == 'kb':
      value = str(int(m.group()) * )
    else:
      value = m.group()
    if m.group().lower() == "memtotal" :
      mem_total = int(value)

group的作用是匹配的是第几个括号括起来的地方,上面代码中,group里面的值是3,其实就是匹配re.match("(\w+):\s+(\d+)\s+(\w+)", line)中第三个括号里面的内容(\w)是否是"kb"

4、startwith()方法

Python startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。

语法如下:

str.startswith(str, beg=0,end=len(string));
其中
str -- 检测的字符串。
strbeg -- 可选参数用于设置字符串检测的起始位置。
strend -- 可选参数用于设置字符串检测的结束位置。

来看一个测试效果:

#!/usr/bin/python

str = "this is string example....wow!!!";
print str.startswith( 'this' );
print str.startswith( 'is', ,  );
print str.startswith( 'this', ,  );

运行结果:

True
True
False

有帮助的话还希望点下再看哈

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档