Лучший способ изменить определенные символы в строке, разделенной подчеркиванием, без использования - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть файлы с именами, такими как centerOne_camera_2_2018-04-11_15:11:21_2.0.jpg. Я хочу изменить последнюю строку, т.е. image_name.split('_')[5].split('.')[0], на другую строку. Я не могу найти изящный способ сделать это и в итоге сделал следующее, что очень грубо

 new_name = image_base.split('_')[0] + image_base.split('_')[1] + image_base.split('_')[2] + image_base.split('_')[3] + image_base.split('_')[4] + frameNumber

То есть мой вывод должен быть centerOne_camera_2_2018-04-11_15:11:21_<some string>.0.jpg Любой лучший способ ценится. Примечание. Я хочу сохранить и остальную часть строки.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Вы можете попробовать rsplit :

"centerOne_camera_2_2018-04-11_15:11:21_2.0.jpg".rsplit("_", 1)
['centerOne_camera_2_2018-04-11_15:11:21', '2.0.jpg']
0 голосов
/ 30 апреля 2018

Я думаю, вы можете искать это:

>>> "centerOne_camera_2_2018-04-11_15:11:21_2.0.jpg".rpartition("_")
('centerOne_camera_2_2018-04-11_15:11:21', '_', '2.0.jpg')

Это для последнего элемента. Но из комментариев, которые я собираю, вы хотите разделить на разделитель n .

>>> n = 3
>>> temp = "centerOne_camera_2_2018-04-11_15:11:21_2.0.jpg".split("_",n)
>>> "_".join(temp[:n]),temp[n]
('centerOne_camera_2', '2018-04-11_15:11:21_2.0.jpg')

Я не уверен, каково ваше возражение против использования +, но вы можете сделать это, если хотите:

>>> temp="centerOne_camera_2_2018-04-11_15:11:21_2.0.jpg".rpartition("_")
>>> "{0}<some_string>{2}".format(*temp)
'centerOne_camera_2_2018-04-11_15:11:21<some_string>2.0.jpg'
...