Python 在文件名中重复某个字符时替换该字符
因此,我有一个文件名列表,如下所示:Python 在文件名中重复某个字符时替换该字符,python,operating-system,Python,Operating System,因此,我有一个文件名列表,如下所示: gry_235545_y1.day gry_234456_y1.day gry_233356_y1.day gry_232256_y2.day 我想将y1中的y更改为a。到目前为止,我已经: for r,d,f in os.walk(path): for n in f: if n.endswith(('sub', 'db')): pass else: if n[2][0
gry_235545_y1.day
gry_234456_y1.day
gry_233356_y1.day
gry_232256_y2.day
我想将y1
中的y
更改为a
。到目前为止,我已经:
for r,d,f in os.walk(path):
for n in f:
if n.endswith(('sub', 'db')):
pass
else:
if n[2][0] == 'y':
print(n.replace('y', 'a'))
但是当我只想在扩展名之前更改
y
时,这会将文件名中的y
字符更改为a
。我的问题是如何在特定位置更改文件名中的字符 您可以尝试将“y”改为“_y”,以便它专门替换_y”
可以使用正则表达式
import re
s = 'gry_235545_y1.day'
re.sub(r'_y(\d+)',r'_a\1',s)
> 'gry_235545_a1.day'
这是我的方法,尽管它似乎比其他答案更长。我想很清楚发生了什么
filenames = ["gry_235545_y1.day", "gry_235555_y1.day", "gry_235522_y1.day" ]
for file in filenames:
first_word = file.split('_')[0]
second_word = file.split('_')[1]
y1_word = "a1"
extenstion = file.split('.')[-1]
new_file_name = "".join(first_word+"_"+second_word+"_"+y1_word+"."+extenstion)
print(new_file_name)
使用
find
获取第二个y
;使用该索引替换所需的字符。这是一种很有技巧的方法。如果您总是有\u y
可供使用,则此功能可以正常工作。而且字符串中永远不会有另一个\u y
。
filenames = ["gry_235545_y1.day", "gry_235555_y1.day", "gry_235522_y1.day" ]
for file in filenames:
first_word = file.split('_')[0]
second_word = file.split('_')[1]
y1_word = "a1"
extenstion = file.split('.')[-1]
new_file_name = "".join(first_word+"_"+second_word+"_"+y1_word+"."+extenstion)
print(new_file_name)