2016-12-19 56 views
6

Mam mały problem z czegoś, co należy zrobić w szkole ...Jak wyodrębnić pierwsze i ostatnie słowa z ciągu?

Moim zadaniem jest dostać surową wejściowy ciąg od użytkownika (text = raw_input()) i muszę drukować pierwsze i ostatnie słowa, które strunowy.

Czy ktoś może mi w tym pomóc? Czekałem na odpowiedź przez cały dzień ...

+1

Przez ostatnie słowo masz na myśli ostatnie słowo? Proszę podać przykładowy przykład: –

+0

Jest ostatnim słowem w '" Hello World! "' Ciągu '' World! "' Lub słowie '" World "'? –

Odpowiedz

11

Musisz najpierw przekonwertować ciąg list słów korzystających str.split a następnie można uzyskać dostęp to lubią:

>>> 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') 

Od Pythona 3.x, można po prostu zrobić:

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

Dziękuję człowiekowi, doceniam to :) Dzięki tobie poznałem także, co split() robi –

1

byłoby to zrobić:

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

Załóżmy, że wejście to jest x. Następnie można zrobić:

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

['partition'] (https://docs.python.org/2/library/stdtypes.html#str.partition) będzie tylko posiekaj 'x' raz (otrzymasz pierwsze słowo, a następnie resztę zdania, a nie ostatnie słowo). – wildwilhelm

+0

@wildwilhelm: Istnieje możliwość, że ta odpowiedź jest tym, czego oczekuje OP, ponieważ nie ma jasności co do definicji * ostatnich słów *. W przypadku wątpliwości odpowiedź nie powinna być odrzucana. –

+1

To prawda, zgadzam się, że treść pytania jest niejednoznaczna. Downvote wycofano. – wildwilhelm

1

Niektórzy mogą powiedzieć, że nigdy nie jest zbyt wiele Odpowiedź jest za pomocą wyrażeń regularnych (w tym przypadku, to wygląda jak najgorszych rozwiązań ..):

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

Jeżeli jesteś używając Python 3, można to zrobić:

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

Wszystkie słowa z wyjątkiem pierwszej i ostatniej przejdzie do zmiennej middle.

+0

Fajnie, po raz pierwszy widzę tę funkcję. – quapka

+0

Nice. Jeśli wymagane były również średnie słowa, to jest to bardzo czyste podejście. –

+1

To jest miłe, chociaż nie powiedzie się w przypadku na końcu zdania zawierającego jedno słowo (gdzie prawdopodobnie jedno słowo powinno zostać zwrócone jako pierwsze i ostatnie słowo). –