繁体   English   中英

重复文件名时替换文件名中的特定字符

[英]Replacing a specific character in filename when that character is repeated

所以我有一个像这样的文件名列表:

gry_235545_y1.day
gry_234456_y1.day
gry_233356_y1.day
gry_232256_y2.day

我想将y1y更改为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扩展名之前。 我的问题是如何在特定位置更改文件名中的字符?

您可以尝试将“ 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'))

您可以使用正则表达式。

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM