2013-11-13 2 views

ответ

68

Когда вы говорите [:-1], вы снимаете последний элемент. Вместо того, чтобы отрезать строку, вы можете применить startswith и endswith на самом строкового объекта, как это

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

Таким образом, вся программа становится как этот

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

Даже проще, с условным выражением, как это

>>> print("hi" if str1.startswith('"') and str1.endswith('"') else "fails") 
hi 
14

Вы сравниваете строки минус последнего символа:

>>> '"xxx"'[:-1] 
'"xxx' 

Обратите внимание, как последний символ, то ", не является частью выходного среза.

Я думаю, вы хотели просто протестировать против последнего персонажа; используйте [-1:] для фрагмента только для последнего элемента.

Однако здесь нет необходимости нарезать; просто используйте str.startswith() и str.endswith() напрямую.

0

Когда вы устанавливаете строковую переменную, она не сохраняет кавычки, они являются частью определения. так что вам не нужно использовать: 1

16

Вы должны использовать либо

if str1[0] == '"' and str1[-1] == '"' 

или

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

но не порезать и проверить StartsWith/EndsWith вместе, в противном случае вы будете отрезать что вы ищете ...

+1

Вы случайно используете = вместо ==. –

Смежные вопросы