Python Checking a string's first and last character

后端 未结 4 1422
南方客
南方客 2020-12-24 10:33

can anyone please explain what is wrong with this code?

str1=\'\"xxx\"\'
print str1
if str1[:1].startswith(\'\"\'):
    if str1[:-1].endswith(\'\"\'):
               


        
相关标签:
4条回答
  • 2020-12-24 10:46

    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.

    0 讨论(0)
  • 2020-12-24 10:56

    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...

    0 讨论(0)
  • 2020-12-24 11:01

    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

    0 讨论(0)
  • 2020-12-24 11:02

    When you say [:-1] you are stripping the last element. Instead of slicing the string, you can apply startswith and endswith on the string object itself like this

    if str1.startswith('"') and str1.endswith('"'):
    

    So the whole program becomes like this

    >>> str1 = '"xxx"'
    >>> if str1.startswith('"') and str1.endswith('"'):
    ...     print "hi"
    >>> else:
    ...     print "condition fails"
    ...
    hi
    

    Even simpler, with a conditional expression, like this

    >>> print("hi" if str1.startswith('"') and str1.endswith('"') else "fails")
    hi
    
    0 讨论(0)
提交回复
热议问题