我想用分号来分割数据,但是我需要忽略方括号内的分号。
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(";")发布于 2022-04-01 11:33:28
您可以从捕获组中的开口到结束方括号捕获数据,以便将其保存在输出中,也可以在;上使用模式中的交替|拆分数据。
([^\s=;]+=\[[^][]*])|;模式匹配:
(捕获组1 (分离后保持) [^\s=;]+=匹配除空白字符;或=以外的1+字符,然后匹配=。\[[^][]*]的[...]匹配)闭组1|或;匹配分号看一个regex演示。
示例
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)输出
['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']一种匹配的方法而不是分割:
[^\s;=]+=(?:\[[^][]*]|[^;]+)此模式匹配:
[^\s;=]+匹配; =或空格字符以外的1+字符=匹配(?:非捕获群\[[^][]*]的[...]匹配|或[^;]+匹配除;以外的任何字符)闭非捕获群请参见此rexex 101演示中的regex匹配。
https://stackoverflow.com/questions/71706207
复制相似问题