根据列表从文件名中删除随机文本

时间:2019-06-04 12:48:15

标签: python

所以我有一个来自glob的文件列表,这些文件的格式如下:

filename xx xxx moretxt.txt

我想做的是按如下方式重命名它们

filename.txt

前两个xx是其中之一:

[1B, 2B, 3B, 4B, 5B, 6B, 7B, 8B, 9B, 10B, 11B, 12B, 1A, 2A, 3A, 4A, 5A, 6A, 7A, 8A, 9A, 10A, 11A, 12A]

那么如何从文件名中删除“ xx xxx moretxt”并保留扩展名?

import glob, os
os.chdir("C:\\somepath")

for file in glob.glob("**/*.txt", recursive = True):
    print(file)

2 个答案:

答案 0 :(得分:2)

使用str.split

例如:

filename = "filename xx xxx moretxt.txt"
val = filename.split()
filename = "{}.{}".format(val[0], val[-1].split(".")[-1])
print(filename)

或使用re.match

例如:

import re

filename = "filename xx xxx moretxt.txt"

filename = re.match(r"(?P<filename>\w+).*\.(?P<ext>.+)", filename)
filename = "{}.{}".format(filename.group('filename'), filename.group('ext'))
print(filename)

输出:

filename.txt

答案 1 :(得分:0)

尝试此操作时,我只有一个文件名。

import re  
import glob, os  
os.chdir("C:\\Somepath")  

for filename in glob.glob("**/*.txt", recursive = True):  
    filename = re.match(r"(?P<filename>\w+).*\.(?P<ext>.+)", filename)  
    filename = "{}.{}".format(filename.group('filename'), filename.group('ext'))  
    print(filename)

输出:
screw12323.txt
screw12323.txt
screw12323.txt
screw12323.txt
screw12323.txt'