Python Проверка строки первого и последнего символов
может кто-нибудь объяснить, что не так с этим кодом?
str1='"xxx"'
print str1
if str1[:1].startswith('"'):
if str1[:-1].endswith('"'):
print "hi"
else:
print "condition fails"
else:
print "bye"
Полученный результат:
Condition fails
но я ожидал, что он напечатает hi
вместо этого.
Ответы
Ответ 1
Когда вы говорите [:-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
Ответ 2
Вы должны либо использовать
if str1[0] == '"' and str1[-1] == '"'
или
if str1.startswith('"') and str1.endswith('"')
но не срезать и проверить startswith/endswith вместе, иначе вы отрезаете то, что ищете.
Ответ 3
Вы тестируете строку минус последний символ:
>>> '"xxx"'[:-1]
'"xxx'
Обратите внимание, что последний символ "
не является частью вывода среза.
Я думаю, вы хотели просто протестировать против последнего персонажа; используйте [-1:]
для среза только для последнего элемента.
Однако здесь нет необходимости срезать; просто используйте str.startswith()
и str.endswith()
напрямую.
Ответ 4
Когда вы устанавливаете строковую переменную, она не сохраняет кавычки, они являются частью определения.
поэтому вам не нужно использовать: 1