python - 提取括号内的文本并存储在字典中
问题描述
我试图将方括号中的所有函数分开并将它们存储在字典中。但是,输出会从除最后一个输出之外的所有输出中去除右括号。
import re
line="[f(x,y),g(y,z),f1(x1,y1)]"
matches = re.match(r"(.*)(\[)(.*)(\])(.*)", line)
if matches:
all_action_labels = matches.group(3)
sep_action_labels = re.split(r'\),',all_action_labels)
j=0
for x in sep_action_labels:
print(f'Function #{j+1} : {x}')
如您所见,所有输出都缺少右括号')',除了最后一个:
Function #1 : f(x,y
Function #1 : g(y,z
Function #1 : f1(x1,y1)
我应该使用什么正则表达式?
此外,如何将这些输出存储在字典中?
解决方案
我提取数据的一般规则是re.findall()
使用相当简单的正则表达式进行调用。
也许这可以满足您的需求:
import re
line="[f(x,y),g(y,z),f1(x1,y1)]"
all_action_labels = re.findall(r"\[(.*?)]", line)
for all_action_label in all_action_labels:
sep_action_labels = re.findall(r"[a-z0-9]+\(.*?\)", all_action_label)
for j, x in enumerate(sep_action_labels, 1):
print(f'Function #{j} : {x}')
我使用一个简单的正则表达式从中提取数据,[]
并使用另一个正则表达式来提取单个函数调用。
推荐阅读
- java - Mockito 不会在超级方法上触发 doReturn
- javascript - 反应原生:有办法显示来自 json 的特定项目吗?
- javascript - 如何在 react-router 中导航到带有百分比符号的路径?
- node.js - 过滤时出现NodeJS String.replace()问题
- jboss - 我们如何使用 jboss cli 从 jboss mq 中删除特定消息
- sql - 通配符运算符用于排除字符前后的所有数字
- java - 如何使用 QueueChannel 和 ServiceActivator 正确配置 TCP inboundAdapter
- c++ - 运行 Linux 的嵌入式 SoC 上的 REST API + Web 服务器
- java - 如何使用带有 CXF 的 WSS 保护 SOAP Web 服务
- react-native - 如果付款成功,如何导航到另一个页面