Python检查string的第一个和最后一个字符
任何人都可以请解释这个代码有什么问题吗?
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]
你剥夺了最后一个元素。 而不是切分string,你可以像这样在string对象本身上应用startswith
和endswith
if str1.startswith('"') and str1.endswith('"'):
所以整个程序就是这样
>>> str1 = '"xxx"' >>> if str1.startswith('"') and str1.endswith('"'): ... print "hi" >>> else: ... print "condition fails" ... hi
更简单一点,用这样的条件expression式
>>> print("hi" if str1.startswith('"') and str1.endswith('"') else "fails") hi
您正在testingstring减去最后一个字符 :
>>> '"xxx"'[:-1] '"xxx'
请注意,最后一个字符"
, "
不是切片输出的一部分。
我想你只是想对最后一个字符进行testing; 使用[-1:]
来分割最后一个元素。
但是,这里不需要切片; 直接使用str.startswith()
和str.endswith()
。
你应该使用
if str1[0] == '"' and str1[-1] == '"'
要么
if str1.startswith('"') and str1.endswith('"')
但不切片和检查startswith / endswith在一起,否则你将切片你正在寻找…
当你设置一个stringvariables时,它不保存引号,它们是它定义的一部分。 所以你不需要使用:1