2016-12-19 5 views
6

ich habe ein kleines Problem mit etwas, was ich in der Schule tun müssen ...Wie extrahiert man die ersten und letzten Wörter aus einer Zeichenkette?

Meine Aufgabe ist die eine rohe Eingabestring von einem Benutzer erhalten (text = raw_input()) und ich brauche das erste und das letzte Wort, das drucken Zeichenfolge.

Kann mir jemand dabei helfen? Ich habe für eine Antwort den ganzen Tag suchen ...

+1

Mit dem letzten Wort meinst du das letzte Wort? Bitte erwähnen Sie das Beispielbeispiel –

+0

Ist das letzte Wort in "Hallo Welt!" "Die Zeichenfolge" "Welt!" Oder das Wort "Welt"? –

Antwort

11

Sie müssen zunächst die Zeichenfolge list von Wörtern konvertieren str.split verwenden und dann können Sie darauf zugreifen möchten:

>>> my_str = "Hello SO user, How are you" 
>>> word_list = my_str.split() # list of words 

# first word v    v last word 
>>> word_list[0], word_list[-1] 
('Hello', 'you') 

Von Python 3.x, können Sie einfach tun:

>>> first, *middle, last = my_str.split() 
+1

Danke Mann ich schätze es :) Dank dir habe ich auch gelernt, was split() nur –

1

Sie tun würde:

print text.split()[0], text.split()[-1] 
5

Nehmen wir an, x ist Ihre Eingabe. Dann können Sie tun:

x.partition(' ')[0] 
x.partition(' ')[-1] 
+1

['partition'] (https://docs.python.org/2/library/stdtypes.html#str.partition) tut hacken Sie 'x' einmal (so erhalten Sie das erste Wort und dann den Rest des Satzes, nicht das letzte Wort). – wildwilhelm

+0

@wildwilhelm: Es gibt eine Möglichkeit, dass diese Antwort das ist, was OP erwartet, da es keine Klarheit über die Definition von * Endworten * gibt. Im Zweifelsfall sollte die Antwort nicht nach unten abgestimmt werden. –

+1

Stimmt, ich stimme zu, dass die Formulierung der Frage mehrdeutig ist. Downvote zurückgezogen. – wildwilhelm

1

Einige sagen könnte, es ist nie zu viele Antwort der mit regulären Ausdrücken (in diesem Fall, das sieht aus wie die schlechtesten Lösungen ..):

>>> import re 
>>> string = "Hello SO user, How are you" 
>>> matches = re.findall(r'^\w+|\w+$', string) 
>>> print(matches) 
['Hello', 'you'] 
7

Wenn Sie mit Python 3, können Sie dies tun:

text = input() 
first, *middle, last = text.split() 
print(first, last) 

Alle Wörter mit Ausnahme des ersten und letzten wird die Variable middle gehen.

+0

Cool, zum ersten Mal sehe ich diese Funktion. – quapka

+0

Schön. Wenn auch mittlere Wörter benötigt werden, ist es sehr sauber Ansatz –

+1

Dies ist schön, obwohl es im Rand Fall eines 1-Wort-Satzes fehlschlägt (wo wohl 1 Wort sowohl als das erste als auch das letzte Wort zurückgegeben werden sollte). –

Verwandte Themen