Если вы не хотите втягивать дополнительную зависимость от внешней библиотеки (как , предложенной luckydonald ), но также не хотите, чтобы будущий сопровождающий кода преследовал вас и убивал вы (потому что вы использовали код для гольфа в производстве), то вот короткий вариант, но поддерживаемый:
def make_ordinal(n):
'''
Convert an integer into its ordinal representation::
make_ordinal(0) => '0th'
make_ordinal(3) => '3rd'
make_ordinal(122) => '122nd'
make_ordinal(213) => '213th'
'''
n = int(n)
suffix = ['th', 'st', 'nd', 'rd', 'th'][min(n % 10, 4)]
if 11 <= (n % 100) <= 13:
suffix = 'th'
return str(n) + suffix