Wpis z mikrobloga

Nie besztajcie pls
Jak to przerobić żeby użyło tylko liczb z linku który podam?
Przykład, mam link:
http://steamcommunity.com/profiles/76561198060708068/
Chcę żeby użyło tylko tego:76561198060708068
Próbowałem:

re.findall('\d+', str1 )

int(filter(str.isdigit, str1))

Kod:
def get_steamid():
steamid = raw_input("Enter the Steamid64: ")
try:
steamid = int(steamid)
get_itemid(steamid)
except:
print "You entered an invalid Steamid64. Please try again."
return get_steamid()

#python #programowanie
  • 23
Nie besztajcie pls


@vomar: Nie ma o co besztać, zadałeś normalne pytanie.

Polecam użyć "Capturing groups" z wyrażeń regularnych. Tutaj użycie dla twojego przypadku:

import re
str1 = r'[http://steamcommunity.com/profiles/76561198060708068/'](http://steamcommunity.com/profiles/76561198060708068/')
x = re.search(r'steamcommunity.com/profiles/(\d+)', str1).group(1)
print(x)
@Spisssek: @an21: dzięki chłopaki, a jak to by było w przypadku zmiennej?
Bo jednorazowo sprawdzam i podaje nawet 50 tych linków i trochę mi schodzi na kasowaniu początku i końcowego slasha

coś takiego?

steamid2 = re.sub("[^0-9]", "",steamid)
lub
steamid2 = re.sub(r"\D", "",steamid)
Nie chce działać ( ͡° ʖ̯ ͡°)
@vomar: ale przecież masz id z tego co podał Ci @an21. Capture group wyciągnęło tylko liczbę.
...no chyba, że czegoś nie zrozumiałem albo to już inny problem/temat
@vomar: człowieku, nie baw się w regexy. Po co Ci to, na co Ci to?

url = '[http://steamcommunity.com/profiles/76561198060708068/'](http://steamcommunity.com/profiles/76561198060708068/')
steam_id = url.rstrip('/').split('/')[-1]
jeśli interesuje Cię szybkość wykonania, to regexy są 2.5 raza wolniejsze

>>> print timeit.timeit(
... "re.search(r'steamcommunity.com/profiles/(\d+)', r'http://steamcommunity
.com/profiles/76561198060708068/').group(1)",
... number=10000,
... setup="import re",
... )
0.0372929573059
>>> print timeit.timeit("'[http://steamcommunity.com/profiles/76561198060708068/'](http://steamcommunity.com/profiles/76561198060708068/')
.rstrip('/').split('/')[-1]", number=10000)
0.0141191482544
@LOLWTF: głupoty gadasz. regexy są zajebiste. Nie lubisz ich bo ich nie znasz. Nie ma lepszego narzędzia do szybkiego napisania parsera. Poza tym udało ci się to osigąnąć bo objekt string ma troche metod które na to pozwoliły, ale w innym języku już klops. Regexa wystarczyło by tylko dopasować. btw Profilowanie pythona? Python nie ma być szybki, w pythonie ma się szybko pisać.