Получить последнее слово после / в URL python - PullRequest
0 голосов
/ 02 мая 2020

Мне нравится упростить мой код, чтобы получить последнее слово после /

любое предложение?

def downloadRepo(repo):
  pos1=repo[::-1].index("/")
  salida=repo[::-1][:pos1]
  print(salida[::-1])

downloadRepo("https://github.com/byt3bl33d3r/arpspoof")

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 02 мая 2020

Вы можете использовать str.rsplit и отрицательную индексацию:

"https://github.com/byt3bl33d3r/arpspoof".rsplit('/', 1)[-1]
# 'arpspoof'

Вы также можете придерживаться индексов и использовать str.rfind:

s = "https://github.com/byt3bl33d3r/arpspoof"
index = s.rfind('/')
s[index+1:]
# 'arpspoof'

Последнее более эффективно использует память, поскольку методы split создают списки в памяти, которые содержат все разделенные токены, включая ложные спереди, которые мы не используем.

1 голос
/ 02 мая 2020

Вы можете использовать

string = "https://github.com/byt3bl33d3r/arpspoof"
last_part = string.split("/")[-1]
print(last_part)

Что дает

arpspoof


Время rsplit() против split() дает (на моем Macbook Air) следующие результаты:
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 раз).

...