如何在python中使用通配符来检查任何扩展名

时间:2016-09-04 16:21:54

标签: python wildcard

我正在尝试检查输入以查看它是否有任何扩展名,这是我使用的代码:

df1.loc[:,'E'] = df1['A']*3
print(df1)
   A  B  C   E
a  1  2  3   3
b  4  5  6  12
c  7  8  9  21

然而,即使输入以完全停止结束,这也会返回“有”   有没有办法检查输入是否有“。”之后的任何字母?   我无法指定扩展应该是什么(因为它取决于用户),只是应该有一个扩展名。

3 个答案:

答案 0 :(得分: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")

这不允许"文件..",但会允许" file。,"。如果您只想允许包含字母的扩展,则应该使用正则表达式。例如,您可以尝试以下操作:

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

这将允许" file.txt",但不允许" a.b.c"。正则表达式非常灵活,可以扩展此方法以检查非常具体的名称格式。

答案 1 :(得分: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解决这个问题可能不是最优雅的方法,但它涵盖了您的问题的基础知识,而不会过于花哨。

答案 2 :(得分: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')