Python - 需要文件名验证帮助

时间:2016-09-27 14:45:07

标签: python

错误的文件名示例: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('-', '_')

1 个答案:

答案 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'

这将用- 替换每个_和空格,除非后跟一个数字。