1. ホーム
  2. python

Python 文字列の先頭と末尾の文字をチェックする

2023-09-24 02:45:41

質問

このコードの何が問題なのか、誰か説明してください。

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] とすると、最後の要素を取り除いていることになります。文字列をスライスするかわりに、その後に適用される 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