【发布时间】:2020-03-13 09:44:57
【问题描述】:
我有一个像这样的数组列表:
data = ['- TEST BEGA','R8=11K(10,15A)B','R9=1K(0,3A)B','R10_R84=13MEG(7,14K)R','R85_R84<100K(970,1000K)R',
'R85_R86=10K(9,11K)R']
我想像这样拆分数组列表
SCN: TEST BEGA
STEP R8
CHILD R8
Operator =
MEASURE_CHILD 11K(10,15A)B
STEP R9
CHILD R9
Operator =
MEASURE_CHILD 1K(0,3A)B
STEP R10_R84
CHILD R10_R84
Operator =
MEASURE_CHILD 13MEG(7,14K)R
STEP R85
CHILD R84
Operator <
MEASURE_CHILD 100K(970,1000K)R
CHILD R86
Operator =
MEASURE_CHILD 10K(9,11K)R
我使用这段代码来做这些事情,但我不知道出了什么问题:
def createTreeStandardBloc( self ):
data = ['- TEST BEGA','R8=11K(10,15A)B','R9=1K(0,3A)B','R10_R84=13MEG(7,14K)R','R85_R84<100K(970,1000K)R','R85_R85=10K(9,11K)R']
last_s = None
for i, line in enumerate(data):
if i == 0:
print("SCN:", line.strip("- "))
elif line.strip():
s, c, op, mc = re.match("^\s*([^_]+)(_\w+)?([<>=])(.*)\s*$", line).groups()
if s != last_s:
print("STEP", s)
print("CHILD", c or s)
print("Operator",op)
print("MEASURE_CHILD", mc)
last_s = s
问题是数据R10_R84的步长被划分为R10为步长,R84为子我希望任何数据在前缀重复时都会被划分为R85。
【问题讨论】:
-
你必须为此使用正则表达式吗?我会发现编写一些代码来找出前缀是否重复要容易得多。
-
请问如何使用
-
您说要在重复前缀时分割数据。前缀是指
R8吗?另外,对于数组中的最后一个元素,是否有原因在您的预期输出中只有一个子元素? -
如果前缀是指
R85,并且它们是根据是否有其他类似“STEP”值进行分组的,我同意。这不是你应该使用正则表达式的东西。 -
@Axe319,是的,我的意思是 R10_R84 会像 R9 和 R8。最后一个元素 R85 被分割,因为前缀 R85 重复了两次 R85_R84 和 R85_R86
标签: python python-3.x algorithm split match