前言

我们在做数据处理的时候,会遇到包含多条格式类似的长字符串,比如说

recv = 'Node1_temperature:26 Node1_humidity:48 Node2_temperature:36 Node2_humidity:48 ' \'Node3_temperature:24 Node3_humidity:35 Node4_temperature:54 Node4_humidity:48 ' \'Node5_temperature:43 Node5_humidity:48 '

从字符串中我们可以看到有五组格式相同的数据,每一组包含temperature和humidity,所以该怎么把这5组数据提取出来呢?

一.使用pre包中的findall方法

例如:提取Node1_temperature的值,我们可以这样做

Node1_temperature = re.findall(r'Node1_temperature:(.*) Node1_humidity', recv)

该例提出的数据是26。从例子可以看出,findall方法的使用: re.findall(r’ 26前面的部分内容(.*)26后面的部分内容’),也即指明前后,来确定中间夹着的内容,指明相对位置得到绝对位置。

二.findall方法的数据返回类型

findall方法返回的数据类型是一个列表,其列表的内容有且只有一个并且是字符串类型的数据,因此可以定义一个变量来接收,该变量接收后成为列表并且只有一个字符串类型的数据。或者另外定义一个列表,先用索引的方式得到该数据,因为只有一个数据,所以索引最大为0:Node1_temperature[0],最后再使用append方法将数据添加到定义好的列表内。如下:

temp = []
Node1_temperature = re.findall(r'Node1_temperature:(.*) Node1_humidity', recv)
temp.append(int(Node1_temperature[0]))

三.说明

格式要求:修改单引号内的内容即可,(.)不用更改。(.)前后的内容根据要提取的数据而定,并且要注意的原字符串中某一数据如26的前后如果包含空格,(.*)前后的内容也要包括空格

re.findall(r'Node1_temperature:(.*) Node1_humidity', recv)

四.Demo

import re
temp = []
humidity = []
recv = 'Node1_temperature:26 Node1_humidity:48 Node2_temperature:36 Node2_humidity:48 ' \'Node3_temperature:24 Node3_humidity:35 Node4_temperature:54 Node4_humidity:48 ' \'Node5_temperature:43 Node5_humidity:48 '
Node1_temperature = re.findall(r'Node1_temperature:(.*) Node1_humidity', recv)
temp.append(int(Node1_temperature[0]))
Node1_humidity = re.findall(r'Node1_humidity:(.*) Node2_temperature', recv)
humidity.append(int(Node1_humidity[0]))
Node2_temperature = re.findall(r'Node2_temperature:(.*) Node2_humidity', recv)
temp.append(int(Node2_temperature[0]))
Node2_humidity = re.findall(r'Node2_humidity:(.*) Node3_temperature', recv)
humidity.append(int(Node2_humidity[0]))
Node3_temperature = re.findall(r'Node3_temperature:(.*) Node3_humidity', recv)
temp.append(int(Node3_temperature[0]))
Node3_humidity = re.findall(r'Node3_humidity:(.*) Node4_temperature', recv)
humidity.append(int(Node3_humidity[0]))
Node4_temperature = re.findall(r'Node4_temperature:(.*) Node4_humidity', recv)
temp.append(int(Node4_temperature[0]))
Node4_humidity = re.findall(r'Node4_humidity:(.*) Node5_temperature', recv)
humidity.append(int(Node4_humidity[0]))
Node5_temperature = re.findall(r'Node5_temperature:(.*) Node5_humidity', recv)
temp.append(int(Node5_temperature[0]))
Node5_humidity = re.findall(r'Node5_humidity:(.*) ', recv)
humidity.append(int(Node5_humidity[0]))
print("5个结点的温度分别为:")
print(temp)
print("5个结点的湿度分别为:")
print(humidity)

五.代码看起来有非常大的改进空间,我相信一定有很好的可以实现相同该类功能的算法,在此请路过的大佬留下建议,谢谢了^ _ ^

python从字符串中提取指定内容相关推荐

  1. python从字符串中提取指定的内容

    有如下字符串: text=cssPath:"http://imgcache.qq.com/ptlogin/v4/style/32",sig:"OvL7F1OQEojtPk ...

  2. python 从字符串中提取数字 re.findall()

    以前老用(.*?)提取数字,今天发现不对了,比如一行数字为: 0 0.248438 0.255556 0.128125 0.194444 用: re.findall('(.*?) (.*?) (.*? ...

  3. python关键词提取_如何从Python格式字符串中提取关键字? - python

    我想在API中提供自动字符串格式,例如: my_api("path/to/{self.category}/{self.name}", ...) 可以替换为格式化字符串中标注的属性值 ...

  4. python从字符串中提取数字并转换为相应数据类型_python从PDF中提取数据的示例

    01 前言 数据是数据科学中任何分析的关键,大多数分析中最常用的数据集类型是存储在逗号分隔值(csv)表中的干净数据.然而,由于可移植文档格式(pdf)文件是最常用的文件格式之一,因此每个数据科学家都 ...

  5. [JS]正则式的使用示例:替换字符串中所有指定内容

    JS中是没有replaceAll这个api 的,想要替换一个字符串中所有的指定内容,需要用到正则式. 对正则式了解甚少也不要紧,看下面这个demo(一看就会) 现在需要把一个字符串里的所有#号换成空格 ...

  6. python所用到的英语单词_用python从字符串中提取英语单词

    实际上你有两个问题. 首先,这:line = re.sub("[^A-Za-z]", "", line.strip()) 这将删除行中的所有非字母.这意味着你不 ...

  7. python输入文字字符串、如何提取字符_如何使用python从字符串中提取url?

    例如: string = "This is a link http://www.google.com" 我怎样才能提取"http://www.google.com&quo ...

  8. [work] python从字符串中提取所有数字到list

    使用正则表达式,用法如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 ## 总结 ## ^ 匹配字符串的开始. ## $ 匹配字符串的结尾. ## \b 匹配一个单词的边界. ##  ...

  9. python从字符串中提取数字_filter

    my_str = '123and456'number = filter(str.isdigit, my_str )# number = 123456 使用正则表达式: ''' 遇到问题没人解答?小编创 ...

最新文章

  1. css折叠样式(1)——使用css样式的三种方式
  2. Qt Creator在浏览器中预览
  3. android reboot 定时重启可靠吗,请教一下有人做过安卓系统 reboot 重启之后,appium 能自动重新连接吗...
  4. Java将mysql输出csv_使用Java将大量数据从数据库导出到.csv时出...
  5. linux中fcntl()、lockf、flock的区别
  6. Android学习之四大组件简单介绍
  7. java 判断一个词是不是成语_Java 判断字符串a和b是否互为旋转词
  8. 关于性能优化的一些实践
  9. MySQL/MariaDB Tips
  10. NYOJ 234 吃土豆(基础dp)
  11. 推荐一款我最近爱上的网页版文库(编辑器)——语雀yuque.com
  12. 华为机试真题 Python 实现【分月饼】
  13. 广式粤语VS港式粤语
  14. PCIe | 基础知识点扫盲
  15. 2016年前端技术观察
  16. 阿里云天池【Docker练习场】踩坑指南
  17. 那些很棒的 blog and site 优秀的博客和网站推荐
  18. C语言 itoa函数及atoi函数
  19. xxljob从入门到精通-全网段最全解说
  20. 手写一个vue中英文翻译组件

热门文章

  1. Discuz!新插件推荐之:国外发帖审核
  2. 速度与激情:雷军和小米手机的三国杀
  3. 今日工作收获(2018/2/27)
  4. 【干货:Excel中插入图片的两种方式】
  5. 高分子聚合物|DBCO-PEG-ACRL,聚乙二醇是一种高分子聚合物
  6. 如何使用C-Lodop保存PDF格式文件
  7. android动画应用,Android 动画
  8. 橙色简约大气岗位竞聘个人简历PPT模板
  9. 计算机二级试题第12套,计算机等级考试二级VFP机试试题12
  10. python 开源协议_python采用什么开源协议