Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要python中的正则表达式来分隔信号定义_Python_Regex - Fatal编程技术网

需要python中的正则表达式来分隔信号定义

需要python中的正则表达式来分隔信号定义,python,regex,Python,Regex,包含信号定义的字符串的形式为 信号_a=(3=box1:soc1.sig_a1 | box1:soc1.sig_a0;2=box2:band_x1;1=xbox:abis | xbox1:bbs.seg_b;0=trip:skip);信号b=super:mario | repp:ver;信号_c=半:六个信号;信号_d=(1=最后一个:结束|开始:扭转;0=演示:测试) 我想分离信号定义并将它们放在一个列表中。像下面这样 signalDefList = [ 'signal_a=(3=bo

包含信号定义的字符串的形式为

信号_a=(3=box1:soc1.sig_a1 | box1:soc1.sig_a0;2=box2:band_x1;1=xbox:abis | xbox1:bbs.seg_b;0=trip:skip);信号b=super:mario | repp:ver;信号_c=半:六个信号;信号_d=(1=最后一个:结束|开始:扭转;0=演示:测试)

我想分离信号定义并将它们放在一个列表中。像下面这样

signalDefList = [
    'signal_a=(3=box1:soc1.sig_a1|box1:soc1.sig_a0;2=box2:band_x1;1=xbox:abis|xbox1:bbs.seg_b;0=trip:skip)',
    'signal_b=super:mario|repp:ver',
    'signal_c=semi:six_sig',
    'signal_d=(1=last:end|start:twist;0=demo:test)'
]
有人能帮我吗?

代码

替换:
\n

用法

输出:

['signal_a=(3=box1:soc1.sig_a1|box1:soc1.sig_a0;2=box2:band_x1;1=xbox:abis|xbox1:bbs.seg_b;0=trip:skip)', 'signal_b=super:mario|repp:ver', 'signal_c=semi:six_sig', 'signal_d=(1=last:end|start:twist;0=demo:test)']

结果 输入 信号_a=(3=box1:soc1.sig_a1 | box1:soc1.sig_a0;2=box2:band_x1;1=xbox:abis | xbox1:bbs.seg_b;0=trip:skip);信号b=super:mario | repp:ver;信号_c=半:六个信号;信号_d=(1=最后一个:结束|开始:扭转;0=演示:测试)

输出
解释
  • 匹配分号字符
    字面意思
  • (?=signal)
    正向前瞻,确保后面是
    信号
代码

替换:
\n

用法

输出:

['signal_a=(3=box1:soc1.sig_a1|box1:soc1.sig_a0;2=box2:band_x1;1=xbox:abis|xbox1:bbs.seg_b;0=trip:skip)', 'signal_b=super:mario|repp:ver', 'signal_c=semi:six_sig', 'signal_d=(1=last:end|start:twist;0=demo:test)']

结果 输入 信号_a=(3=box1:soc1.sig_a1 | box1:soc1.sig_a0;2=box2:band_x1;1=xbox:abis | xbox1:bbs.seg_b;0=trip:skip);信号b=super:mario | repp:ver;信号_c=半:六个信号;信号_d=(1=最后一个:结束|开始:扭转;0=演示:测试)

输出
解释
  • 匹配分号字符
    字面意思
  • (?=signal)
    正向前瞻,确保后面是
    信号

既然已经回答了,您应该使用
;(?=信号)

要获得所需的输出,请将其放入
re.split()
方法中:

import re
signalDefList = re.split(';(?=signal)', data)
signalDefList
#['signal_a=3=box1:soc1.sig_a1|box1:soc1.sig_a0;2=box2:band_x1;1=xbox:abis|xbox1:bbs.seg_b;0=trip:skip)',
# 'signal_b=super:mario|repp:ver',
# 'signal_c=semi:six_sig',
# 'signal_d=(1=last:end|start:twist;0=demo:test)']

因为已经回答了,所以您应该使用
;(?=信号)

要获得所需的输出,请将其放入
re.split()
方法中:

import re
signalDefList = re.split(';(?=signal)', data)
signalDefList
#['signal_a=3=box1:soc1.sig_a1|box1:soc1.sig_a0;2=box2:band_x1;1=xbox:abis|xbox1:bbs.seg_b;0=trip:skip)',
# 'signal_b=super:mario|repp:ver',
# 'signal_c=semi:six_sig',
# 'signal_d=(1=last:end|start:twist;0=demo:test)']

如果你能澄清/解释一下你的方法会有帮助。@ArthurVigil我在解释部分做了,非常感谢:)我从来没有使用过前瞻功能,现在我发现它非常有用,它使吐弦变得非常简单。欢迎@ChethanKumarN!如果它回答了你的问题,你应该把它标记为答案:)如果你能澄清/解释一下你的方法,会有帮助的。@ArthurVigil我在解释部分做了,非常感谢:)我从未使用过前瞻功能,现在我发现它非常有用,而且它使吐弦变得非常简单。欢迎你@ChethanKumarN!如果它回答了您的问题,您应该将其标记为答案:)
import re
signalDefList = re.split(';(?=signal)', data)
signalDefList
#['signal_a=3=box1:soc1.sig_a1|box1:soc1.sig_a0;2=box2:band_x1;1=xbox:abis|xbox1:bbs.seg_b;0=trip:skip)',
# 'signal_b=super:mario|repp:ver',
# 'signal_c=semi:six_sig',
# 'signal_d=(1=last:end|start:twist;0=demo:test)']