python - 使用正则表达式提取字符串中的浮点数
问题描述
我有以下字符串列表
List = ['A = -25.47 dBm' , 'B = -47.35 dBm' , 'A = -26.54 dBm' , 'B = -32.35 dBm', 'A = 27.95 dBm' , 'B = -64.11 dBm' , 'A = -45.11 dBm' , 'B = -18.67 dBm']
我想提取 A 的值并列出 B 的值并列出
我试过以下
#First I joined the data into a string
S = ' '.join(List)
re.findall(r"A = ([-+]?\d*\.\d+|\d+) dBm" , S)
这似乎不起作用
预期结果
A_list = [-25.47,-26.54, 27.95,-45.11]
B_list = [-47.35,-32.35,-64.11,-18.67]
解决方案
您可以使用re
和collections.defaultdict
:
import re, collections
l = ['A = -25.47 dBm' , 'B = -47.35 dBm' , 'A = -26.54 dBm' , 'B = -32.35 dBm', 'A = 27.95 dBm' , 'B = -64.11 dBm' , 'A = -45.11 dBm' , 'B = -18.67 dBm']
d = collections.defaultdict(list)
for i in l:
a, b = re.findall('^\w+|[\-\d\.]+', i)
d[a].append(float(b))
A_list, B_list = d['A'], d['B']
输出:
[-25.47, -26.54, 27.95, -45.11]
[-47.35, -32.35, -64.11, -18.67]
推荐阅读
- layout - Ngx 管理模板侧边栏和内容布局
- javascript - 验证数组 Json Javascript
- flutter - 如何在 Flutter 的输入文本字段中动态渲染 TeX 方程?
- git - Git 将文件从一个存储库移动到另一个存储库以获取历史记录
- c# - 在 UWP 中生成应用程序包时出错 ERROR: MCG0037
- javascript - React Router - 具有多个重定向组件的意外重定向行为
- android - Flutter:本地通知插件显示两次通知
- python - 读取文件时表不加载数据显示空表
- python - 如何使用networkx找到特定节点集之间的最短路径
- dataweave - 简单的用法奇迹,我可以让光标在自动完成点符号后停止自动选择空白的单个空格吗?