所以我有一个像这样的文件名列表:
gry_235545_y1.day
gry_234456_y1.day
gry_233356_y1.day
gry_232256_y2.day
我想将y
中的y1
更改为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
时,这会将所有文件名中的a
字符更改为y
。我的问题是如何在特定位置更改文件名中的字符?
答案 0 :(得分:0)
您可以尝试将'y'更改为'_y',以便它专门替换_y#。
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'))
答案 1 :(得分:0)
您可以使用正则表达式。
import re
s = 'gry_235545_y1.day'
re.sub(r'_y(\d+)',r'_a\1',s)
> 'gry_235545_a1.day'
答案 2 :(得分:0)
这是我的方法,即使它似乎比其他答案更长。我觉得很明白,发生了什么。
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)