Câu trả lời:
>>> s = "the dude is a cool dude"
>>> s.find('dude')
4
is
từ trong câu this is a cool dude
thì sao? Tôi đã thử phương thức find nhưng nó trả về chỉ số 2 thay vì 5. Làm thế nào để tôi đạt được điều này bằng cách sử dụng find ()?
index
vàfind
Bên cạnh find
phương pháp là có index
. find
và index
cả hai mang lại kết quả tương tự: trở về vị trí của sự xuất hiện đầu tiên, nhưng nếu không có gì được tìm thấy index
sẽ nâng cao một ValueError
khi find
lợi nhuận -1
. Tốc độ, cả hai đều có kết quả điểm chuẩn giống nhau.
s.find(t) #returns: -1, or index where t starts in s
s.index(t) #returns: Same as find, but raises ValueError if t is not in s
rfind
và rindex
:Nói chung, find và index trả về chỉ mục nhỏ nhất nơi chuỗi nhập vào bắt đầu
rfind
vàrindex
trả về chỉ mục lớn nhất nơi nó bắt đầu Hầu hết các thuật toán tìm kiếm chuỗi tìm kiếm từ trái sang phải , vì vậy các hàm bắt đầu bằngr
chỉ ra rằng tìm kiếm xảy ra từ phải sang trái .
Vì vậy, trong trường hợp khả năng của yếu tố bạn đang tìm kiếm gần kết thúc hơn là bắt đầu danh sách, rfind
hoặc rindex
sẽ nhanh hơn.
s.rfind(t) #returns: Same as find, but searched right to left
s.rindex(t) #returns: Same as index, but searches right to left
Nguồn: Python: Hướng dẫn khởi động nhanh bằng hình ảnh, Toby Donaldson
input_string = "this is a sentence"
và nếu chúng ta muốn tìm sự xuất hiện đầu tiên của từ is
thì nó có hoạt động không? # first occurence of word in a sentence input_string = "this is a sentence" # return the index of the word matching_word = "is" input_string.find("is")
để thực hiện điều này theo cách thuật toán, bằng cách không sử dụng bất kỳ hàm in sẵn nào của python. Điều này có thể được thực hiện như
def find_pos(string,word):
for i in range(len(string) - len(word)+1):
if string[i:i+len(word)] == word:
return i
return 'Not Found'
string = "the dude is a cool dude"
word = 'dude1'
print(find_pos(string,word))
# output 4
def find_pos(chaine,x):
for i in range(len(chaine)):
if chaine[i] ==x :
return 'yes',i
return 'no'
-1
nếu không được tìm thấy