Как разделить слово до точки включая?
На входе массив с названием файлов и их расширением по типу "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'