Как заменить все, кроме последнего экземпляра replace () в строке с Python? - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь переименовать все файлы в директории с помощью этого кода (пока), однако я не уверен, как сказать 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 голосов
/ 03 февраля 2019

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'
0 голосов
/ 03 февраля 2019

Попробуйте это:

for filename in testDir:
        testStr = "" + filename
        total_occurances = filename.count('.')
        testStr = testStr.replace(".", " ", total_occurances-1)
0 голосов
/ 03 февраля 2019

Используйте os.splitext для разделения имени и расширения и присоедините их после замены точек в имени:

for filename in testDir:
    name, ext = os.path.splitext(filename)
    name = name.replace('.', ' ')
    new_filename = name + ext
    print(new_filename)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...