'Python Checking a string's first and last character
can anyone please explain what is wrong with this code?
str1='"xxx"'
print str1
if str1[:1].startswith('"'):
if str1[:-1].endswith('"'):
print "hi"
else:
print "condition fails"
else:
print "bye"
The output I got is:
Condition fails
but I expected it to print hi instead.
Solution 1:[1]
You should either use
if str1[0] == '"' and str1[-1] == '"'
or
if str1.startswith('"') and str1.endswith('"')
but not slice and check startswith/endswith together, otherwise you'll slice off what you're looking for...
Solution 2:[2]
You are testing against the string minus the last character:
>>> '"xxx"'[:-1]
'"xxx'
Note how the last character, the ", is not part of the output of the slice.
I think you wanted just to test against the last character; use [-1:] to slice for just the last element.
However, there is no need to slice here; just use str.startswith() and str.endswith() directly.
Solution 3:[3]
When you set a string variable, it doesn't save quotes of it, they are a part of its definition. so you don't need to use :1
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Martijn Pieters |
| Solution 3 | Farhadix |
