2016-12-19 32 views
6

Tôi có một vấn đề nhỏ với một cái gì đó tôi cần phải làm gì trong trường ...Làm thế nào để trích xuất các từ đầu tiên và cuối cùng từ một chuỗi?

Nhiệm vụ của tôi là có được một chuỗi đầu vào nguyên liệu từ một người dùng (text = raw_input()) và tôi cần in những lời đầu tiên và cuối cùng của đó chuỗi.

Ai đó có thể giúp tôi với điều đó không? Tôi đã được tìm kiếm một câu trả lời tất cả các ngày ...

+1

Bằng từ cuối cùng bạn có ngụ ý từ cuối cùng không? Vui lòng đề cập đến ví dụ mẫu –

+0

Là từ cuối cùng trong '" Hello World! "' Chuỗi "" World! "' Hoặc từ '" World "'? –

Trả lời

11

Bạn phải trước hết chuyển đổi chuỗi list các từ sử dụng str.split và sau đó bạn có thể truy cập vào nó thích:

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

Từ Python 3.x, bạn có thể chỉ cần làm:

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

Cảm ơn người đàn ông tôi đánh giá cao nó :) Nhờ bạn tôi cũng đã học được những gì chia() không –

1

Bạn sẽ làm gì:

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

Giả sử x là thông tin bạn nhập. Sau đó, bạn có thể làm:

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

['phân vùng'] (https://docs.python.org/2/library/stdtypes.html#str.partition) sẽ chỉ chặt 'x' một lần (vì vậy, bạn sẽ nhận được từ đầu tiên, và sau đó phần còn lại của câu, không phải từ cuối cùng). – wildwilhelm

+0

@wildwilhelm: Có khả năng câu trả lời này là điều OP mong đợi vì không có sự rõ ràng về định nghĩa * từ cuối cùng *. Như một vấn đề nghi ngờ, câu trả lời không nên bị bỏ phiếu xuống –

+1

Đúng, tôi đồng ý rằng từ ngữ câu hỏi không rõ ràng. Downvote rút lại. – wildwilhelm

1

Có thể nói, có bao giờ là quá nhiều câu trả lời bằng cách sử dụng biểu thức thông thường (trong trường hợp này, điều này có vẻ như giải pháp tồi tệ nhất ..):

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

Nếu bạn là sử dụng Python 3, bạn có thể làm điều này:

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

Tất cả các từ ngoại trừ từ đầu tiên và cuối cùng sẽ đi vào biến middle.

+0

Tuyệt vời, lần đầu tiên tôi thấy tính năng này. – quapka

+0

Rất tốt. Nếu các từ ở giữa cũng được yêu cầu, đó là cách tiếp cận rất sạch sẽ –

+1

Điều này là tốt đẹp, mặc dù nó không thành công trong trường hợp cạnh của câu 1 từ (cho rằng 1 từ phải được trả về cả từ đầu và từ cuối cùng). –

Các vấn đề liên quan