我已经写了这个函数,它输出以下帧序列类型的范围。你知道吗
frme.info.03.bmp
frme01_0040.bmp
frme01_0042.bmp
frme01_0043.bmp
frme02_0044.bmp
frme02_0045.bmp
frme02_0046.bmp
frme02_0047.bmp
frme03_0652.raw
frme03_0653.raw
frme03_0654.raw
frme03_0656.raw
frme03_0659.raw
frme1.45.dat
frme2.45.dat
frme3.45.dat
frme4.45.dat
我写的函数是:
def getRange(self, sequence, sep="_"):
frameNumbers = []
for item in sequence:
frameNumbers.append(int(os.path.splitext(item)[0].split(sep)[-1]))
return FrameRange(frameNumbers)
但是这会产生错误:ValueError: invalid literal for int() with base 10: 'pe67'
如果我有这种类型的帧序列:
pe67.0140
pe67.0141
我该如何处理以上所有的案件?你知道吗
首先,尝试将刺痛的处理划分为逻辑步骤。不一定要排成一行。特别是调试。你知道吗
您的代码生成:
它试图把这个值转换成int
一种方法是使用正则表达式。在一个
.
或_
后面接另一个.
的数字后面取每个数字。你知道吗或者你只是用力向后走,取第一个连续的数字范围:
两者的输出相同:
相关问题 更多 >
编程相关推荐