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

Python 根据列表从文件名中删除随机文本,python,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,

因此,我有一个来自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)

使用
str.split

Ex:

filename = "filename xx xxx moretxt.txt"
val = filename.split()
filename = "{}.{}".format(val[0], val[-1].split(".")[-1])
print(filename)
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

或者使用
re.match

Ex:

filename = "filename xx xxx moretxt.txt"
val = filename.split()
filename = "{}.{}".format(val[0], val[-1].split(".")[-1])
print(filename)
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

当我尝试这个时,我只得到一个文件名

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)
重新导入
导入全局操作系统
os.chdir(“C:\\Somepath”)
对于glob.glob(“***.txt”,recursive=True)中的文件名:
filename=re.match(r“(?P\w+).*\(?P+)”,文件名)
filename=“{}.{}”.format(filename.group('filename')、filename.group('ext'))
打印(文件名)
输出:
螺钉12323.txt
螺钉12323.txt
螺钉12323.txt
螺钉12323.txt

screw12323.txt'

您可以尝试使用正则表达式仅捕获第一个单词。有什么原因不能简单地
拆分文件名并获取第一项(即
'filename'
)?这些术语已经用空格隔开了。类似地,
split('.')[-1]
用于扩展名本身。您知道文件名是如何开始的吗?是否总是字符串
“filename”
?它有五倍长吗?它们是否总是具有相同的文件扩展名?文件名不应包含空格/大写/整数字符?抱歉,应该指定每个文件的文件名是唯一的,不仅仅是“文件名”,而是例如“screw12323 2b 100.txt”或boltandnot 12b 125”,因此数组很抱歉,我不明白。“screw12323 2b 100.txt”应该重命名为“screw12323.txt,“boltandnot 12b 125.txt”应重命名为“boltandnots.txt”,依此类推:)上述内容也适用于此…您尝试过吗?