2016-09-04 27 views
0

我試圖檢查輸入,看是否有任何擴展這裏是我使用的代碼:如何使用通配符在python來檢查任何擴展

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

然而這將返回「有「即使輸入只是完全停止。
有沒有辦法檢查輸入是否有「。」後面的任何字母? 我不能指定擴展應該是什麼(因爲它取決於用戶),只是應該有一個擴展。

+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

我用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

分割點上的字符串並檢查後面是否有任何東西。 [Python中提取從文件擴展名]的

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」輸出「extension」。 – jochen

+0

@jochen,OP的規範是'''...檢查輸入是否有任何字母后面的「。」...''' – wwii

相關問題