2009-03-23 45 views
54

Tôi đang cố gắng tìm một số ví dụ nhưng không may mắn. Có ai biết một số ví dụ trên mạng? Tôi muốn biết những gì nó trở lại khi nó không thể tìm thấy, và làm thế nào để xác định từ đầu đến cuối, mà tôi đoán là sẽ là 0, -1.Ví dụ về tìm chuỗi trong Python

+0

Bạn có hỏi về http://docs.python.org/library/stdtypes.html#id4 không?Bạn có hỏi về phương pháp tìm kiếm không? http://docs.python.org/library/stdtypes.html#str.find –

+0

Cảm ơn vâng, chỉ cần tìm phương pháp. Tôi tìm thấy trang đó nhưng không có ví dụ. –

+0

Nó nói -1 trên trang. Bạn cần biết thêm điều gì nữa? –

Trả lời

39

bạn có thể sử dụng str.index quá:

>>> 'sdfasdf'.index('cc') 
Traceback (most recent call last): 
    File "<pyshell#144>", line 1, in <module> 
    'sdfasdf'.index('cc') 
ValueError: substring not found 
>>> 'sdfasdf'.index('df') 
1 
+4

Tại sao bạn chọn cái này qua cái kia? – endolith

+1

nó làm tăng lỗi thay vì trả về một mã, mà là nhiều pythonic, theo ý kiến ​​của tôi. – SilentGhost

+7

ngoại lệ không nên được sử dụng để kiểm soát luồng. do đó, chỉ sử dụng chỉ mục() nếu không có kết quả phù hợp bất thường. – aehlke

102

Tôi không chắc chắn những gì bạn đang tìm kiếm, ý của bạn là find()?

>>> x = "Hello World" 
>>> x.find('World') 
6 
>>> x.find('Aloha'); 
-1 
+1

Cảm ơn, bạn sẽ làm gì nếu không tìm được? –

+3

-1 nói vỏ trăn của tôi – SilentGhost

+0

Bạn nhận được -1, được cập nhật với liên kết tới tài liệu và ví dụ. –

2

find( sub[, start[, end]])

Return chỉ số thấp nhất trong chuỗi nơi chuỗi phụ được tìm thấy, như vậy mà tiểu được chứa trong khoảng [bắt đầu, kết thúc ]. Các đối số tùy chọn bắt đầu và kết thúc được diễn giải dưới dạng ký hiệu slice. Trả về -1 nếu không tìm thấy phụ.

Từ the docs.

15

Thành thực mà nói, đây là loại tình huống mà tôi chỉ cần mở lên Python trên dòng lệnh và bắt đầu rối tung xung quanh: interpreter

>>> x = "Dana Larose is playing with find()" 
>>> x.find("Dana") 
0 
>>> x.find("ana") 
1 
>>> x.find("La") 
5 
>>> x.find("La", 6) 
-1 

Python làm cho loại này thử nghiệm dễ dàng. (Cùng đi cho các ngôn ngữ khác với một thông dịch viên tương tự)

+0

IPython làm cho loại điều này thậm chí còn tốt hơn. – endolith

28

Từ here:

str.find (sub [, bắt đầu [, kết thúc]])
Return chỉ số thấp nhất trong chuỗi nơi chuỗi phụ được tìm thấy , như vậy mà phụ được chứa trong phạm vi [bắt đầu, kết thúc]. Các đối số tùy chọn bắt đầu và kết thúc được diễn giải dưới dạng ký hiệu slice. Return -1 nếu phụ là không tìm thấy "

Vì vậy, một số ví dụ:.

>>> str = "abcdefioshgoihgs sijsiojs " 
>>> str.find('a') 
0 
>>> str.find('g') 
10 
>>> str.find('s',11) 
15 
>>> str.find('s',15) 
15 
>>> str.find('s',16) 
17 
>>> str.find('s',11,14) 
-1 
+18

Thông thường, không nên sử dụng các từ như 'str' làm tên biến. –

5

Nếu bạn muốn tìm kiếm các ví dụ cuối cùng của một chuỗi trong một văn bản, bạn có thể chạy rfind

.

Ví dụ:

s="Hello" 
    print s.rfind('l') 

đầu ra: 3

* không nhập khẩu cần thiết

012.

Toàn bộ cú pháp:

stringEx.rfind(substr, beg=0, end=len(stringEx)) 
0

Hãy thử điều này:

with open(file_dmp_path, 'rb') as file: 
fsize = bsize = os.path.getsize(file_dmp_path) 
word_len = len(SEARCH_WORD) 
while True: 
    p = file.read(bsize).find(SEARCH_WORD) 
    if p > -1: 
     pos_dec = file.tell() - (bsize - p) 
     file.seek(pos_dec + word_len) 
     bsize = fsize - file.tell() 
    if file.tell() < fsize: 
     seek = file.tell() - word_len + 1 
     file.seek(seek) 
    else: 
     break 
0

nếu x là một chuỗi và bạn tìm kiếm y mà còn là một chuỗi của họ là hai trường hợp: trường hợp 1: y tồn tại trong x như vậy x.find (y) = chỉ số (vị trí) của y trong x. trường hợp 2: y không tồn tại như vậy x.find (y) = -1 có nghĩa là y không được tìm thấy trong x.