Как разделить слово до точки включая?

На входе массив с названием файлов и их расширением по типу "file.exe". Нужно вывести только расширения файлов с точкой и добавить их в массив. С помощью rsplit() получается отделить слова только до точки.

Или возможно как-то добавить точки в начало уже ко всем элементам массива?

names = ["crazy.pr", "black-and-white.als", "illegal.wav", "exultant.mp3", "exotic.jar", "capricious.pt",
                      "abundant.ala", "eatable.zbrush", "careful.py", "godly.css", "clever.txt", "dusty.maya",
                      "awesome.zbrush", "discreet.jar", "creepy.h", "fair.pt", "descriptive.mp3", "boundless.ala",
                      "berserk.xml", "hungry.exe", "awful.exe"]
word = []
for i in names:
    
    word.append(i.rsplit( ".")[ -1 ] )

Ответы (2 шт):

Автор решения: MaxU

Воспользуйтесь os.path.splitext():

import os

extensions = [os.path.splitext(fn)[-1] for fn in names]

результат:

In [115]: extensions
Out[115]:
['.pr',
 '.als',
 '.wav',
 '.mp3',
 '.jar',
 '.pt',
 '.ala',
 '.zbrush',
 '.py',
 '.css',
 '.txt',
 '.maya',
 '.zbrush',
 '.jar',
 '.h',
 '.pt',
 '.mp3',
 '.ala',
 '.xml',
 '.exe',
 '.exe']
→ Ссылка
Автор решения: Voko

Вариант решения с Object-oriented filesystem paths

https://docs.python.org/3/library/pathlib.html

from pathlib import Path
extensions = [Path(x).suffix for x in names]

при этом в names могут быть не только имена файлов,

но и пути к файлам, в том числе пути из разных операционок:

["dir/crazy.pr", "C:\\user\\tmp\\black-and-white.als"]

Если же у файлов встречаются двойные (тройные) расширения (file.tar.gz),

и они тоже нужны, тогда такой вариант:

extensions = [''.join(Path(x).suffixes) for x in names]

Будет выводить вот так:

'.tar.gz'
→ Ссылка