Мне нравится упростить мой код, чтобы получить последнее слово после /
любое предложение?
def downloadRepo(repo): pos1=repo[::-1].index("/") salida=repo[::-1][:pos1] print(salida[::-1]) downloadRepo("https://github.com/byt3bl33d3r/arpspoof")
Заранее спасибо!
Вы можете использовать str.rsplit и отрицательную индексацию:
str.rsplit
"https://github.com/byt3bl33d3r/arpspoof".rsplit('/', 1)[-1] # 'arpspoof'
Вы также можете придерживаться индексов и использовать str.rfind:
str.rfind
s = "https://github.com/byt3bl33d3r/arpspoof" index = s.rfind('/') s[index+1:] # 'arpspoof'
Последнее более эффективно использует память, поскольку методы split создают списки в памяти, которые содержат все разделенные токены, включая ложные спереди, которые мы не используем.
split
Вы можете использовать
string = "https://github.com/byt3bl33d3r/arpspoof" last_part = string.split("/")[-1] print(last_part)
Что дает
arpspoof
rsplit()
split()
import timeit def schwobaseggl(): return "https://github.com/byt3bl33d3r/arpspoof".rsplit('/', 1)[-1] def jan(): return "https://github.com/byt3bl33d3r/arpspoof".split("/")[-1] print(timeit.timeit(schwobaseggl, number=10**6)) print(timeit.timeit(jan, number=10**6)) # 0.347005844116 # 0.379151821136
Таким образом, альтернатива rsplit действительно немного быстрее (работает в 1.000.000 раз).
rsplit