2016-09-27 3 views
0

잘못된 파일 이름 예를 필요 : 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('-', '_') 
+2

정확히 무엇이 문제입니까? – depperm

+0

@Rich Johnson import string – c4f4t0r

+0

디버깅 도움을 요청하는 질문 (** "왜이 코드가 작동하지 않습니까?"**)는 원하는 동작을 포함해야합니다. * 특정 문제 또는 오류 * 및 *이를 재현하는 데 필요한 가장 짧은 코드 * ** 질문 자체에서 **. ** 명확한 문제 성명 **이없는 질문은 다른 독자에게 유용하지 않습니다. See : [최소한의 완전하고 검증 가능한 예제를 만드는 방법] (http://stackoverflow.com/help/mcve). – MattDMo

답변

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' 

이것은 _않는으로 모든 -과 공간을 대체 할 것이 뒤에 숫자가옵니다.

+0

커피가 차기 전에 응답합니다. 고맙습니다. 유효한 문자가 있는지 확인한 후 re.sub를 사용하고 매력처럼 작동합니다. 감사! –