首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中忽略方框内的分号分割数据

问在Python中忽略方框内的分号分割数据
EN

Stack Overflow用户
提问于 2022-04-01 11:28:04
回答 1查看 75关注 0票数 0

我想用分号来分割数据,但是我需要忽略方括号内的分号。

代码语言:javascript
复制
val = "L=1nH;Tol=0.3nH;Idc=1000mA;Isat=NA;Iacpp=NA;Fr=10GHz;ESR=0.10ohm;Q=[100MegHz 7; 500MegHz 23;1.8GHz 47;2.4GHz 57];dL@Isat=NA;dT@Idc=NA"
val.split(";")
EN

回答 1

Stack Overflow用户

发布于 2022-04-01 11:33:28

您可以从捕获组中的开口到结束方括号捕获数据,以便将其保存在输出中,也可以在;上使用模式中的交替|拆分数据。

代码语言:javascript
复制
([^\s=;]+=\[[^][]*])|;

模式匹配:

  • (捕获组1 (分离后保持)
    • [^\s=;]+=匹配除空白字符;或=以外的1+字符,然后匹配=。
    • 来自\[[^][]*]的[...]匹配

  • )闭组1
  • |或
  • ;匹配分号

看一个regex演示。

示例

代码语言:javascript
复制
import re

val = "L=1nH;Tol=0.3nH;Idc=1000mA;Isat=NA;Iacpp=NA;Fr=10GHz;ESR=0.10ohm;Q=[100MegHz 7; 500MegHz 23;1.8GHz 47;2.4GHz 57];dL@Isat=NA;dT@Idc=NA"
pattern = r"([^\s=;]+=\[[^][]*])|;"
result = [s for s in  re.split(pattern, val) if s]
print(result)

输出

代码语言:javascript
复制
['L=1nH', 'Tol=0.3nH', 'Idc=1000mA', 'Isat=NA', 'Iacpp=NA', 'Fr=10GHz', 'ESR=0.10ohm', 'Q=[100MegHz 7; 500MegHz 23;1.8GHz 47;2.4GHz 57]', 'dL@Isat=NA', 'dT@Idc=NA']

一种匹配的方法而不是分割:

代码语言:javascript
复制
[^\s;=]+=(?:\[[^][]*]|[^;]+)

此模式匹配:

  • [^\s;=]+匹配; =或空格字符以外的1+字符
  • =匹配
  • (?:非捕获群
    • 来自\[[^][]*]的[...]匹配
    • |或
    • [^;]+匹配除;以外的任何字符

  • )闭非捕获群

请参见此rexex 101演示中的regex匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71706207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档