it-swarm.com.de

Python Überprüfen des ersten und letzten Zeichens eines Strings

kann jemand bitte erklären, was mit diesem Code nicht stimmt?

str1='"xxx"'
print str1
if str1[:1].startswith('"'):
    if str1[:-1].endswith('"'):
        print "hi"
    else:
        print "condition fails"
else:
    print "bye"   

Die Ausgabe, die ich bekam, ist:

Condition fails

aber ich habe erwartet, dass es stattdessen hi ausgibt.

58
Chuvi

Wenn du sagst [:-1] Sie entfernen das letzte Element. Anstatt den String aufzuteilen, können Sie startswith und endswith auf das String-Objekt selbst anwenden

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

So wird das ganze Programm so

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

Noch einfacher, mit einem bedingten Ausdruck wie diesem

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

Sie sollten entweder verwenden

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

oder

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

aber nicht schneiden und Startmit/Endemit zusammen prüfen, sonst schneidest du ab, wonach du suchst ...

25
Roberto

Sie testen gegen die Zeichenfolge abzüglich des letzten Zeichens:

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

Beachten Sie, dass das letzte Zeichen, das ", Nicht Teil der Ausgabe des Slice ist.

Ich denke, Sie wollten nur gegen den letzten Charakter testen. Verwenden Sie [-1:], um nur das letzte Element zu schneiden.

Es besteht jedoch keine Notwendigkeit, hier in Scheiben zu schneiden; benutze einfach str.startswith() und str.endswith() direkt.

15
Martijn Pieters

Wenn Sie eine Zeichenfolgenvariable festlegen, werden keine Anführungszeichen gespeichert, sie sind Teil der Definition. Sie brauchen also nicht zu verwenden: 1

0
Farhadix