Операция поиска и замены

#python #replace

#python #заменить

Вопрос:

У меня есть список, в котором есть значения URL, такие как:

 http://farm6.static.flickr.com/5149/5684108566_aed8b9b52d_s.jpg
  

Как я могу изменить _s в конце на _m для всех вхождений?

Ответ №1:

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

 str = "http://farm6.static.flickr.com/5149/5684108566_aed8b9b52d_s.jpg"
str = str.replace("_s","_m")
  

Если вы хотите быть уверены, что изменена только часть las, и вы знаете, что все это .jpg файлы, которые вы можете использовать:

 str = "http://farm6.static.flickr.com/5149/5684108566_aed8b9b52d_s.jpg"
str = str.replace("_s.jpg","_m.jpg")
  

Чтобы дать больше контекста и избежать изменений в середине URL.

Комментарии:

1. 1 для дополнительной проверки контекста. Здесь может быть полезен .rreplace метод.

Ответ №2:

Или, если вы хотите иметь возможность сделать это для любого расширения файла и убедиться, что ничего в строке не изменено, за исключением последней части.

 import re

str = "http://farm6.static.flickr.com/5149/5684108566_aed8b9b52d_s.jpg"
re.sub("(.*)_s(.[a-z0-9]{1,4})$", r"1_m2", str)
str = "http://farm6.static.flickr.com/5149/5684108566_aed8b9b52d_s.png"
re.sub("(.*)_s(.[a-z0-9]{1,4})$", r"1_m2", str)
str = "http://farm6.static.flickr.com/5149/5684108566_aed8b9b52d_s.gif"
re.sub("(.*)_s(.[a-z0-9]{1,4})$", r"1_m2", str)
str = "http://farm6.static.flickr.com/5149/5684108566_aed8b9b52d_s.zip"
re.sub("(.*)_s(.[a-z0-9]{1,4})$", r"1_m2", str)
  

Вывод:

 >>> str = "http://farm6.static.flickr.com/5149/5684108566_aed8b9b52d_s.jpg"
>>> re.sub("(.*)_s(.[a-z0-9]{1,4})$", r"1_m2", str)
'http://farm6.static.flickr.com/5149/5684108566_aed8b9b52d_m.jpg'

>>> str = "http://farm6.static.flickr.com/5149/5684108566_aed8b9b52d_s.png"
>>> re.sub("(.*)_s(.[a-z0-9]{1,4})$", r"1_m2", str)
'http://farm6.static.flickr.com/5149/5684108566_aed8b9b52d_m.png'

>>> str = "http://farm6.static.flickr.com/5149/5684108566_aed8b9b52d_s.gif"
>>> re.sub("(.*)_s(.[a-z0-9]{1,4})$", r"1_m2", str)
'http://farm6.static.flickr.com/5149/5684108566_aed8b9b52d_m.gif'

>>> str = "http://farm6.static.flickr.com/5149/5684108566_aed8b9b52d_s.zip"
>>> re.sub("(.*)_s(.[a-z0-9]{1,4})$", r"1_m2", str)
'http://farm6.static.flickr.com/5149/5684108566_aed8b9b52d_m.zip'