python从字符串中提取指定内容
前言
我们在做数据处理的时候,会遇到包含多条格式类似的长字符串,比如说
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从字符串中提取指定内容相关推荐
- python从字符串中提取指定的内容
有如下字符串: text=cssPath:"http://imgcache.qq.com/ptlogin/v4/style/32",sig:"OvL7F1OQEojtPk ...
- python 从字符串中提取数字 re.findall()
以前老用(.*?)提取数字,今天发现不对了,比如一行数字为: 0 0.248438 0.255556 0.128125 0.194444 用: re.findall('(.*?) (.*?) (.*? ...
- python关键词提取_如何从Python格式字符串中提取关键字? - python
我想在API中提供自动字符串格式,例如: my_api("path/to/{self.category}/{self.name}", ...) 可以替换为格式化字符串中标注的属性值 ...
- python从字符串中提取数字并转换为相应数据类型_python从PDF中提取数据的示例
01 前言 数据是数据科学中任何分析的关键,大多数分析中最常用的数据集类型是存储在逗号分隔值(csv)表中的干净数据.然而,由于可移植文档格式(pdf)文件是最常用的文件格式之一,因此每个数据科学家都 ...
- [JS]正则式的使用示例:替换字符串中所有指定内容
JS中是没有replaceAll这个api 的,想要替换一个字符串中所有的指定内容,需要用到正则式. 对正则式了解甚少也不要紧,看下面这个demo(一看就会) 现在需要把一个字符串里的所有#号换成空格 ...
- python所用到的英语单词_用python从字符串中提取英语单词
实际上你有两个问题. 首先,这:line = re.sub("[^A-Za-z]", "", line.strip()) 这将删除行中的所有非字母.这意味着你不 ...
- python输入文字字符串、如何提取字符_如何使用python从字符串中提取url?
例如: string = "This is a link http://www.google.com" 我怎样才能提取"http://www.google.com&quo ...
- [work] python从字符串中提取所有数字到list
使用正则表达式,用法如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 ## 总结 ## ^ 匹配字符串的开始. ## $ 匹配字符串的结尾. ## \b 匹配一个单词的边界. ## ...
- python从字符串中提取数字_filter
my_str = '123and456'number = filter(str.isdigit, my_str )# number = 123456 使用正则表达式: ''' 遇到问题没人解答?小编创 ...
最新文章
- css折叠样式(1)——使用css样式的三种方式
- Qt Creator在浏览器中预览
- android reboot 定时重启可靠吗,请教一下有人做过安卓系统 reboot 重启之后,appium 能自动重新连接吗...
- Java将mysql输出csv_使用Java将大量数据从数据库导出到.csv时出...
- linux中fcntl()、lockf、flock的区别
- Android学习之四大组件简单介绍
- java 判断一个词是不是成语_Java 判断字符串a和b是否互为旋转词
- 关于性能优化的一些实践
- MySQL/MariaDB Tips
- NYOJ 234 吃土豆(基础dp)
- 推荐一款我最近爱上的网页版文库(编辑器)——语雀yuque.com
- 华为机试真题 Python 实现【分月饼】
- 广式粤语VS港式粤语
- PCIe | 基础知识点扫盲
- 2016年前端技术观察
- 阿里云天池【Docker练习场】踩坑指南
- 那些很棒的 blog and site 优秀的博客和网站推荐
- C语言 itoa函数及atoi函数
- xxljob从入门到精通-全网段最全解说
- 手写一个vue中英文翻译组件