我已经找过了,但没有找到适合我这个案子的东西。基本上,我试着把以下几行分开:
(CU!DIVD:WEXP:DIVD-:DIVD+:RWEXP:RDIVD:RECL:RLOSS:MISCDI:WEXP-:INT:RGAIN:DIVOP:RRGAIN:DIVOP-:RDIVOP:RRECL:RBRECL:INT -:RRLOSS:INT +:RINT:RDIVD-:RECL-:RWXPOR:WEXPOR:MISCRE:WEXP+:RWEXP-:RBWEXP:RECL+:RRECL-:RBDIVD)
你可以读这个,因为CU不是DIVD或WEXP或DIV-or等等。如果这行超过65个字符,我想把这行拆分成更易于管理的内容,比如:
^{pr2}$他们都不到65个字符。这个可以存储在一个列表中,剩下的我来处理。我开始用RegEx来处理这个问题,但是我遇到了一些麻烦。在
此外,它还可以具有以下条件:
到目前为止,我有这个:
def FilterParser(iteratorIn, headerIn):
listOfStrings = []
for eachItem in iteratorIn:
if len(str(eachItem.text)) > 65:
exmlLogger.error('The length of filter' + eachItem.text + ' exceeds the limit and will be dropped')
pass
else:
listOfStrings.append(rightSpaceFill(headerIn + EXUTIL.intToString(eachItem),80))
return ''.join(stringArray)
下面是一个使用regex的解决方案,经过编辑后在每一新行的开头包含
CU!
前缀(或任何其他前缀):首先,我们需要获取前缀,我们使用}。在
re.search().group(0)
,它返回整个匹配。最后一行最多应该是65个字符,我们将用来获取这些行的正则表达式将不包括前缀或右括号,这就是为什么maxlen
是{现在我们知道了可以匹配的大多数字符,regex
^{pr2}$(.{1,<maxlen>)
的第一部分最多可以匹配这么多个字符。结尾的部分(?:$|:)
,用于确保我们只在分号或字符串末尾拆分字符串。因为只有一个捕获组regex.findall()
将只返回匹配项,去掉后面的分号。下面是示例字符串的外观:列表理解通过在每个结果中添加前缀和尾随}将从
)
来构造所有行的列表。对s
进行切片,这样前缀和尾随的{regex.findall()
之前的原始字符串中剥离出来。希望这有帮助!在相关问题 更多 >
编程相关推荐