Python检查字符串的第一个和最后一个ch

2024-03-28 09:30:11 发布

您现在位置: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


Tags: 密码ifhiconditionelsexxxbyeprint
3条回答

您正在根据字符串减去最后一个字符进行测试:

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

注意最后一个字符"不是切片输出的一部分。

我想您只是想测试最后一个字符;使用[-1:]来切片最后一个元素。

不过,这里不需要切片;直接使用str.startswith()str.endswith()

当你说[:-1]时,你是在剥离最后一个元素。您可以对字符串对象本身应用startswithendswith,而不是对字符串进行切片,如下所示

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

你要么用

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

或者

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

但不要将startswith/endswith一起切分和检查,否则你会切掉你想要的。。。

相关问题 更多 >