str.find()
zawsze zwraca -1
, jeśli nie zostanie znaleziony. Czy można wpisać wyrażenie zamiast str.find()
i return None
, jeśli nie znaleziono?Wyrażenie oceniające jako Brak, gdy substr nie został znaleziony
9
A
Odpowiedz
3
Gdybym Podsumowując, chcesz coś, co:
- jest wyrazem
- Ocenia do
None
, gdy nie znaleziono - Ocenia do indeksu po znalezieniu
- nie używa trójargumentowy (tak, że Python 2.4 poradzi sobie)
Jedynym rozwiązaniem mogłem wymyślić, który spełnia wszystkie wymagania jest to dziwne:
(lambda x: x and x - 1)((str.find(substr) + 1) or None)
Na przykład:
>>> (lambda x: x and x - 1)(('abcd'.find('b') + 1) or None)
1
>>> (lambda x: x and x - 1)(('abcd'.find('_') + 1) or None)
>>>
Nie mam instalacji Pythona 2.4, aby ją przetestować, więc mogę tylko mieć nadzieję, że działa.
+1
lambda naprawdę działa! tks ~ – ThunderEX
5
None if str.find() < 0 else str.find()
a jeśli powielanie kodu przeszkadza (i powinien):
index = str.find()
None if index < 0 else index
Warunkiem trójargumentowy był added w 2,5. Więc jeśli masz starszą wersję Pythona, możesz to zrobić:
def my_find(str, sub_str)
index = str.find(sub_str)
if index < 0:
return None
else:
return index
7
Masz na myśli coś takiego?
def find2(str, substr):
result = str.find(substr)
return result if result != -1 else None
W Pythonie 2.4, zmienić ostatni wiersz
if result != -1:
return result
else:
return None
Powiązane problemy
- 1. Microsoft.DotNet.Props nie został znaleziony
- 2. .h plik nie został znaleziony
- 3. com.google.android.gsf pakiet nie został znaleziony
- 4. Makra Lispa oceniające wyrażenia, gdy nie chcę tego do
- 5. Dlaczego getservletcontext nie został znaleziony?
- 6. Konstruktor nie został znaleziony typ
- 7. framework nie został znaleziony FirebaseAnalytics
- 8. Plik "SHK.h" nie został znaleziony
- 9. wirtualny port com0com nie został znaleziony
- 10. typu narzędzi: BusyIndicator nie został znaleziony
- 11. IronPython sys._getframe nie został znaleziony
- 12. Plik klasy nie został znaleziony w IntelliJ
- 13. lib curl symbol nie został znaleziony
- 14. asp.net deploy - plik Main.Master.cs nie został znaleziony
- 15. Program g ++ nie został znaleziony w ścieżce
- 16. Seter nie został znaleziony dla klasy własności
- 17. Junit ant task - JUnitTask nie został znaleziony
- 18. Błąd dyld: obraz nie został znaleziony
- 19. WP7 (1): System.Windows.debug.resources nie został znaleziony?
- 20. Niestandardowy identyfikator wtyczki Gradle nie został znaleziony
- 21. Z klasy PHPUnit "mysqli" nie został znaleziony
- 22. Tomcat 7 setenv.sh nie został znaleziony
- 23. -setKornerRadius nie został znaleziony w widoku niestandardowym
- 24. facebookSDK 3.1.1 plik nie został znaleziony
- 25. ld: framework nie został znaleziony AudioUnit
- 26. Stan AngularJS ng-src, jeśli nie został znaleziony (przez URL)
- 27. Lzz (Lazy C++) - plik #include nie został znaleziony
- 28. dyld: Biblioteka nie załadowana, Powód: obraz nie został znaleziony
- 29. PDFsharp nie może znaleźć obrazu (obraz nie został znaleziony)
- 30. docelowa WSGI skrypt nie został znaleziony lub nie do stat
(Co) Próbowałeś? –