How to add prefix or suffix to image urls in Python

Nick Ang
Nick Ang
Jul 27, 2017 · 1 min read

To add a suffix to an image url string in Python, you’ll need to use the re (regular expression) module. We can use regex to identify the file format (eg .jpg or .png) and insert some text just before it.

Adding a suffix to image urls (eg. from abc.com/img/image.jpg to abc.com/img/image_small.jpg) can be useful for getting smaller or larger images from a server that supports this handy technique. Shopify is a good example of a company that practices this.

Here’s the code:

import re

def add_suffix_to_image_url(image_url, suffix):
"""
Add suffix (eg. "_large") to image name just before .jpg or .png
"""
try:
# Find a match of '.jpg' or '.png'
index = re.search(r"(\.jpg|\.png)", image_url)
if not index:
return image_url
else:
# Get zero-based index of the start of the matched term in image_url
index = index.start()
# Doctor the string by splitting and rejoining with [:index] and [index:]!
return image_url[:index] + suffix + image_url[index:]
except:
return image_url

add_suffix_to_image_url('https://example.com/image/some-cat-image.jpg', '_large')
#= https://example.com/image/some-cat-image_large.jpg

I’m not sure what use cases there might be for adding prefixes. Some cases probably exist but most likely not for image urls (?). In any case, to do that, just tweak the regex pattern:

# The same idea applies to adding prefix - just change the regex pattern
index = re.search(r"(http://|https://)", image_url)

# Use index.end() to get index of end of matched term
index = index.end()

Additional notes:
See it in action on repl
Python regex documentation


Originally published at Nick Ang.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade