从数组中拆分文件扩展名

时间:2016-08-05 23:40:10

标签: python

我正在尝试删除数组中每个文件名中找到的扩展名。

我有

files = ['file.tsv', 'file2.tsv', 'file3.tsv']

并希望输出为

files = ['file', 'file2', 'file3']

如何在阵列上执行此功能?

5 个答案:

答案 0 :(得分:3)

您可能希望使用现有列表进行列表理解:

import os
no_extensions = [os.path.splitext(file_name)[0] for file_name in files]

您应该使用os.path.splitext而不是file_name.split('.'),因为如果您的文件名中间有一个句点(例如"file.partial.dat"将失败并显示file_name.split('.')),它也会有效/ p>

答案 1 :(得分:0)

print str(files).replace(".tsv","")

可能不是你老师想要的,但它会看起来正确; P

答案 2 :(得分:0)

import re

pat = re.compile(r'\.')

['.'.join(pat.split(k)[:-1]) for k in files]

答案 3 :(得分:0)

无论扩展名是什么,这都是一般的方法。

fileNames = [s.split('.')[0] for s in files]

它创建一个新列表并保持原始列表不变。

编辑:

如果你的名字中有点(比如file.tsv.zip),还有一种方法可以做到而不用导入:

fileNames = ['.'.join(s.split('.')[:-1]) for s in files]

如果你还想支持NO扩展名的文件,那么最好使用这个:

fileNames = [s if s.find('.')==-1 else '.'.join(s.split('.')[:-1]) for s in files]

(好吧它虽然有点脏:P)

所以最后一个给出:

>> files = ['file.tsv', 'file2.tsv.zip', 'file3']
>> fileNames
    ['file', 'file2.tsv', 'file3']

答案 4 :(得分:-1)

我愿意......

Files = [n.split()[0] for n in files]