Jämföra Strängar
Strängjämförelser i Python är som standard skiftlägeskänsliga. Om användarinmatning kan variera i versaler/gemener eller innehålla extra blanksteg, normalisera först och jämför sedan. En enkel och tillförlitlig metod är att trimma blanksteg och standardisera skiftläge innan likhets- eller prefix/suffix-kontroller.
Skiftlägeskänslig vs skiftlägesokänslig
Som standard är "Apple" == "apple" False. För att ignorera skiftläge, normalisera båda sidor.
123a = "Hello" b = "heLLo" print(a.lower() == b.lower()) # True
casefold() är en starkare, internationellt anpassad variant av lower() och är ett bättre standardval för skiftlägesokänsliga jämförelser.
123s1 = "straße" s2 = "STRASSE" print(s1.casefold() == s2.casefold()) # True
Trimma och jämför
Användare lägger ofta till mellanslag av misstag. Ta bort inledande och avslutande blanksteg före jämförelse.
123raw = " admin " role = "ADMIN" print(raw.strip().casefold() == role.casefold()) # True
Kontroll av prefix och suffix
Använd startswith och endswith. För skiftlägesokänsliga kontroller, normalisera först.
1234fname = "Report_Final.PDF" print(fname.lower().endswith(".pdf")) # True prefix = "rep" print(fname.strip().casefold().startswith(prefix.casefold())) # True
Konsekvent normaliseringspipeline
Välj en enkel, upprepningsbar ordning:
- Ta bort yttre blanksteg med
.strip(); - Standardisera skiftläge med
.casefold()(eller.lower()om du föredrar det); - Använd sedan
==,in,startswith,endswitheller andra kontroller.
1. Vilken rad utför en skiftlägesokänslig likhetskontroll korrekt?
2. Givet s = " Hello ", vilket uttryck returnerar True för en skiftlägesokänslig likhetskontroll med "hello" och ignorerar omgivande blanksteg?
3. Vilket påstående är mest korrekt för robust skiftlägesokänslig jämförelse?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Can you explain the difference between `lower()` and `casefold()` in more detail?
Are there any situations where `casefold()` might not be appropriate?
Can you show more examples of normalizing user input before comparison?
Awesome!
Completion rate improved to 5
Jämföra Strängar
Svep för att visa menyn
Strängjämförelser i Python är som standard skiftlägeskänsliga. Om användarinmatning kan variera i versaler/gemener eller innehålla extra blanksteg, normalisera först och jämför sedan. En enkel och tillförlitlig metod är att trimma blanksteg och standardisera skiftläge innan likhets- eller prefix/suffix-kontroller.
Skiftlägeskänslig vs skiftlägesokänslig
Som standard är "Apple" == "apple" False. För att ignorera skiftläge, normalisera båda sidor.
123a = "Hello" b = "heLLo" print(a.lower() == b.lower()) # True
casefold() är en starkare, internationellt anpassad variant av lower() och är ett bättre standardval för skiftlägesokänsliga jämförelser.
123s1 = "straße" s2 = "STRASSE" print(s1.casefold() == s2.casefold()) # True
Trimma och jämför
Användare lägger ofta till mellanslag av misstag. Ta bort inledande och avslutande blanksteg före jämförelse.
123raw = " admin " role = "ADMIN" print(raw.strip().casefold() == role.casefold()) # True
Kontroll av prefix och suffix
Använd startswith och endswith. För skiftlägesokänsliga kontroller, normalisera först.
1234fname = "Report_Final.PDF" print(fname.lower().endswith(".pdf")) # True prefix = "rep" print(fname.strip().casefold().startswith(prefix.casefold())) # True
Konsekvent normaliseringspipeline
Välj en enkel, upprepningsbar ordning:
- Ta bort yttre blanksteg med
.strip(); - Standardisera skiftläge med
.casefold()(eller.lower()om du föredrar det); - Använd sedan
==,in,startswith,endswitheller andra kontroller.
1. Vilken rad utför en skiftlägesokänslig likhetskontroll korrekt?
2. Givet s = " Hello ", vilket uttryck returnerar True för en skiftlägesokänslig likhetskontroll med "hello" och ignorerar omgivande blanksteg?
3. Vilket påstående är mest korrekt för robust skiftlägesokänslig jämförelse?
Tack för dina kommentarer!