错误的文件名示例:foo is-not_bar-3.mp4
应该是什么:foo_is_not_bar-3.mp4
我只想为字符串的最后一位保留-
,如果它是一个数字后跟扩展名。到目前为止,我最接近的是使用以下代码:
fname = 'foo is-not_bar-3.mp4'
valchars = '-_. %s%s' % (string.ascii_letters, string.digits)
f = ''.join(c for c in fname if c in valchars).replace(' ', '_').replace('-', '_')
答案 0 :(得分:1)
您可以使用正面替换前端使用正则表达式:
import re
fname = 'foo is-not_bar-3.mp4'
f = re.sub(r'\s|-(?!\d+)', '_', fname)
print(f)
>> 'foo_is_not_bar-3.mp4'
这将用-
替换每个_
和空格,除非后跟一个数字。