2016-09-04 3 views
0

Я пытаюсь проверить вход, чтобы увидеть, если это имеет какое-либо расширение здесь код, который я использовал:Как использовать маски в питоне, чтобы проверить для любого расширения

filename=input() 
if "." in filename: 
    print ("There is") 

Однако это вернет «есть «даже если вход заканчивается только полной остановкой.
Есть ли способ проверить, имеет ли вход какие-либо буквы после «.»? Я не могу указать, какое расширение должно быть (как и до пользователя), просто чтобы было расширение.

+0

Возможный дубликат [Извлечение расширение из файла в Python] (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

Я использовал функцию find, чтобы найти персонажа . в me. Если символ не существует в me, функция возвращает -1. Затем, с индексом символа ., я вижу, есть ли какие-либо символы после этого индекса с len(me[index + 1:]). Если функция len возвращает положительное число, то вы знаете, что после символа . есть символы.

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

Это может быть не самый элегантный способ решить эту проблему с Python, но он охватывает основы вашей проблемы, не получая слишком фантазии.

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