删除下划线后的字符

Remove characters after underscore

我在 arc map 中有照片文件,文件名如下: image_name = (1-3#s)_(10#'s).jpg。例如:

1_1z1z1z1z1z.jpg
599_iiiiiiiiii.jpg

我要去掉下划线后面的6个字符(_),去掉(.jpg)。例如,结果将是:

1_1z1z
599_iiii

image_name.strip('jpg') 将文件扩展名作为简单表达式删除,但我无法弄清楚如何在高级部分中制作组合字符串命令以适应第二条规则。

您可以使用re.sub匹配_之后的前6个字符(任意6个字符.{6})并将它们全部删除。然后也从结果中删除固定的.jpg

>>> name = '123_1a2b3c4d5e.jpg'
>>> re.sub('_.{6}', '_', name).replace('.jpg', '')
'123_4d5e'

请注意,str.strip('jpg') 不是 删除 jpg 扩展名的安全(或正确)方法。 str.strip 将删除给定字符的 所有前导和尾随实例 ,例如:

>>> 'jppj-test-jpg'.strip('jpg')
'-test-'