Drill

ProblemsPython › text

Turn a product title into a URL slug

mediumtextPython

The catalogue builds a URL from each product title, and the result has to be safe to put in a path.

slugify(title: string) → string

Solve it in the editor →

Where you start

def slugify(title: str) -> str:
    

Worked examples

CallResult
slugify(" Blue Widget, 12mm! ")"blue-widget-12mm"
slugify("A---B")"a-b"
slugify("Already-slugged")"already-slugged"
slugify("!!!")""

Hint

Append a dash only when there is already something to separate, then trim the one you may have left on the end.

Reference solution in Python
def slugify(title: str) -> str:
    result = ''
    for ch in title.lower():
        if ch.isascii() and ch.isalnum():
            result += ch
        elif result and not result.endswith('-'):
            result += '-'
    return result[:-1] if result.endswith('-') else result

The same problem in another language

More text problems in Python