如何用python替换字符串中除了replace()的最后一个实例以外的所有实例?

时间:2019-02-03 08:42:53

标签: python string replace

我正在尝试使用此代码重命名控制器中的所有文件(到目前为止),但是,我不确定如何告诉python不要替换“。”的最后一个实例。

我意识到这可能很简单,但是我是编程新手

任何帮助将不胜感激!

import os

def main():

testDir = os.listdir("D:\TempServer\Videos\Series\American Dad\American 
Dad! S12 Season 12 [1080p WEB-DL HEVC x265 10bit] [AAC 5.1] [MKV] - ImE")
print(testDir)
newTestStr = ""


    for filename in testDir:
        testStr = "" + filename
        print(testStr.replace(".", " ", -1))

if __name__ == '__main__':
    main()

“-1”不起作用,我不确定会怎样

3 个答案:

答案 0 :(得分:3)

使用os.splitext分隔名称和扩展名,并在替换名称中的点后将它们加入:

for filename in testDir:
    name, ext = os.path.splitext(filename)
    name = name.replace('.', ' ')
    new_filename = name + ext
    print(new_filename)

答案 1 :(得分:2)

str.replace接受旧的子字符串,新的子字符串以及执行替换次数的次数。 -1不适合替换次数。计算旧的子字符串出现在字符串中的次数,然后从该值中减去一个并执行该替换次数。

>>> s = 'abc x def x ghi x'
>>> val = s.count('x')
>>> s.replace('x', 'y', val-1)
'abc y def y ghi x'

答案 2 :(得分:2)

尝试一下:

for filename in testDir:
        testStr = "" + filename
        total_occurances = filename.count('.')
        testStr = testStr.replace(".", " ", total_occurances-1)