2016-09-04 1 views
0

를 확인하기 위해 파이썬에 와일드 카드를 사용하는 내가 사용하는 코드입니다 "입력이 완전히 멈춘 경우에도 종료됩니다.
입력 뒤에 "."문자 뒤에 문자가 있는지 확인할 수있는 방법이 있습니까? 확장 프로그램이 있어야하는지 지정할 수 없습니다 (사용자에게 달려 있음). 확장 프로그램이 있어야합니다.어떻게 내가 여기에있는 확장자가 있는지 확인하기 위해 입력을 확인하려고 확장자

+0

가능한 복제 (http://stackoverflow.com/questions/541390/extracting-extension-from-filename-in-python) – rfkortekaas

답변

2

쉬운 옵션은 "."을 확인하는 것입니다. 제거 마지막 문자 filename에 :

if len(filename)>1 and "." in filename[:-1]: 
    print("there is") 

이 "파일을 ..."허용 것이다, 또는 당신이 원하는하지 않을 수있다. 또 다른 아이디어는 각 "."에서 filename을 나누는 것입니다. "파일을." ".. 파일을"

parts = filename.split(".") 
if len(parts) > 1 and parts[-1]: 
    print("there is") 

이 허용되지 않지만 수 있습니다 : 당신이 비 비어 마지막있는 두 개 이상의 부품을 얻을 수 있는지 확인합니다. 글자로 구성된 확장자 만 허용하려면 정규식을 사용해야합니다. 예를 들어 다음을 시도해 볼 수 있습니다.

import re 
m = re.match('[a-z]*\.[a-z]+', filename) 
if m: 
    print("there is") 

이렇게하면 "file.txt"는 허용되지만 "a.b.c"는 허용되지 않습니다. 정규 표현식은 매우 유연하며이 접근법을 확장하여 매우 구체적인 이름 형식을 확인할 수 있습니다.

+1

또한 ''사용할 수 있습니다. ' filename.rstrip ('.')'에 있습니다. – Carpetsmoker

0

.me에 위치 시키려면 find 함수를 사용했습니다. 문자가 me에 없으면이 함수는 -1을 반환합니다. 그런 다음 . 문자의 색인으로 len(me[index + 1:])의 색인 뒤에 문자가 있는지 확인합니다. len 함수가 양수를 반환하면 . 문자 뒤에 문자가 있음을 알 수 있습니다.

me=input() 
index = me.find(".") 
if (index != -1 and len(me[index + 1:]) > 0): 
    print ("There is") 

파이썬으로이 문제를 해결하는 가장 우아한 방법은 아니지만 너무 상상하지 않고 문제의 기본 사항을 다룹니다.

0

점에 문자열을 분할하고 그 뒤에 아무 것도 없는지 확인하십시오. [파이썬에서 파일 이름에서 확장자를 추출]의

s = 'aaa.' 
if s.strip().split('.')[-1]: 
    print('extension') 
else: 
    print('no extension') 
s = 'aaa.bbb' 
if s.strip().split('.')[-1]: 
    print('extension') 
else: 
    print('no extension') 
+0

당신의 코드가's = "file-name-with-no-extension"'에 대해 "확장자"를 출력 할 것으로 의심됩니다. – jochen

+0

@jochen, OP 스펙은'''... 입력 뒤에 "."... "'' – wwii

관련 문제