Tôi có:
một chức năng:
5s = "Happy Birthday" s2 = "py" print[s.find[s2]]
và một chuỗi:
6,s = "Happy Birthday" s2 = "py" print[s.find[s2]]
Về cơ bản, tôi muốn nhập
s = "Happy Birthday"
s2 = "py"
print[s.find[s2]]
7 và trả lại s = "Happy Birthday"
s2 = "py"
print[s.find[s2]]
8 nhưng tôi tiếp tục nhận được s = "Happy Birthday"
s2 = "py"
print[s.find[s2]]
9 để trở lại thay thế.Code:
def find_str[s, char]:
index = 0
if char in s:
char = char[0]
for ch in s:
if ch in s:
index += 1
if ch == char:
return index
else:
return -1
print[find_str["Happy birthday", "py"]]
Không chắc có gì sai!
Lapriwa
1.7771 Huy hiệu vàng12 Huy hiệu bạc18 Huy hiệu đồng1 gold badge12 silver badges18 bronze badges
hỏi ngày 18 tháng 2 năm 2014 lúc 1:52Feb 18, 2014 at 1:52
1
Có một phương thức tích hợp tìm thấy trên các đối tượng chuỗi.
s = "Happy Birthday"
s2 = "py"
print[s.find[s2]]
Python là một "ngôn ngữ bao gồm pin" có mã được viết để làm hầu hết những gì bạn muốn [bất cứ điều gì bạn muốn] .. trừ khi đây là bài tập về nhà :]
def find_str[s, char]:
index = 0
if char in s:
c = char[0]
for ch in s:
if ch == c:
if s[index:index+len[char]] == char:
return index
index += 1
return -1
print[find_str["Happy birthday", "py"]]
print[find_str["Happy birthday", "rth"]]
print[find_str["Happy birthday", "rh"]]
0 Trả về -1 Nếu không thể tìm thấy chuỗi.Đã trả lời ngày 18 tháng 2 năm 2014 lúc 3:57Feb 18, 2014 at 3:57
3
Lý tưởng nhất là bạn sẽ sử dụng str.find hoặc str.index như hedgehog bị mất trí nhớ. Nhưng bạn đã nói rằng bạn không thể ... like demented hedgehog said. But you said you can't ...
Vấn đề của bạn là mã của bạn chỉ tìm kiếm cho ký tự đầu tiên của chuỗi tìm kiếm của bạn, trong đó [bản đầu tiên] là tại Index 2.
Về cơ bản, bạn đang nói nếu
def find_str[s, char]:
index = 0
if char in s:
c = char[0]
for ch in s:
if ch == c:
if s[index:index+len[char]] == char:
return index
index += 1
return -1
print[find_str["Happy birthday", "py"]]
print[find_str["Happy birthday", "rth"]]
print[find_str["Happy birthday", "rh"]]
1 là trong def find_str[s, char]:
index = 0
if char in s:
c = char[0]
for ch in s:
if ch == c:
if s[index:index+len[char]] == char:
return index
index += 1
return -1
print[find_str["Happy birthday", "py"]]
print[find_str["Happy birthday", "rth"]]
print[find_str["Happy birthday", "rh"]]
2, tăng def find_str[s, char]:
index = 0
if char in s:
c = char[0]
for ch in s:
if ch == c:
if s[index:index+len[char]] == char:
return index
index += 1
return -1
print[find_str["Happy birthday", "py"]]
print[find_str["Happy birthday", "rth"]]
print[find_str["Happy birthday", "rh"]]
3 cho đến khi def find_str[s, char]:
index = 0
if char in s:
c = char[0]
for ch in s:
if ch == c:
if s[index:index+len[char]] == char:
return index
index += 1
return -1
print[find_str["Happy birthday", "py"]]
print[find_str["Happy birthday", "rth"]]
print[find_str["Happy birthday", "rh"]]
4 trả về 3 khi tôi thử nghiệm nhưng nó vẫn sai. Đây là một cách để làm điều đó. def find_str[s, char]:
index = 0
if char in s:
c = char[0]
for ch in s:
if ch == c:
if s[index:index+len[char]] == char:
return index
index += 1
return -1
print[find_str["Happy birthday", "py"]]
print[find_str["Happy birthday", "rth"]]
print[find_str["Happy birthday", "rh"]]
Nó tạo ra đầu ra sau:
3
8
-1
Đã trả lời ngày 18 tháng 2 năm 2014 lúc 2:03Feb 18, 2014 at 2:03
Eric Fortineric FortinEric Fortin
7.4532 Huy hiệu vàng24 Huy hiệu bạc33 Huy hiệu đồng2 gold badges24 silver badges33 bronze badges
4
Có một tùy chọn khác trong biểu thức chính quy, phương pháp
def find_str[s, char]:
index = 0
if char in s:
c = char[0]
for ch in s:
if ch == c:
if s[index:index+len[char]] == char:
return index
index += 1
return -1
print[find_str["Happy birthday", "py"]]
print[find_str["Happy birthday", "rth"]]
print[find_str["Happy birthday", "rh"]]
5import re
string = 'Happy Birthday'
pattern = 'py'
print[re.search[pattern, string].span[]] ## this prints starting and end indices
print[re.search[pattern, string].span[][0]] ## this does what you wanted
Nhân tiện, nếu bạn muốn tìm thấy tất cả sự xuất hiện của một mẫu, thay vì chỉ là mẫu đầu tiên, bạn có thể sử dụng phương thức
def find_str[s, char]:
index = 0
if char in s:
c = char[0]
for ch in s:
if ch == c:
if s[index:index+len[char]] == char:
return index
index += 1
return -1
print[find_str["Happy birthday", "py"]]
print[find_str["Happy birthday", "rth"]]
print[find_str["Happy birthday", "rh"]]
6import re
string = 'i think that that that that student wrote there is not that right'
pattern = 'that'
print[[match.start[] for match in re.finditer[pattern, string]]]
sẽ in tất cả các vị trí bắt đầu của các trận đấu.
Oren
4.0574 Huy hiệu vàng33 Huy hiệu bạc61 Huy hiệu Đồng4 gold badges33 silver badges61 bronze badges
Đã trả lời ngày 5 tháng 12 năm 2019 lúc 22:04Dec 5, 2019 at 22:04
Zyyzyyzyy
1.09912 Huy hiệu bạc24 Huy hiệu đồng12 silver badges24 bronze badges
Thêm vào câu trả lời của con nhím @demented khi sử dụng
def find_str[s, char]:
index = 0
if char in s:
c = char[0]
for ch in s:
if ch == c:
if s[index:index+len[char]] == char:
return index
index += 1
return -1
print[find_str["Happy birthday", "py"]]
print[find_str["Happy birthday", "rth"]]
print[find_str["Happy birthday", "rh"]]
7Về mặt hiệu quảefficiency
Có thể đáng để kiểm tra trước tiên để xem S1 có ở S2 trước khi gọi
def find_str[s, char]:
index = 0
if char in s:
c = char[0]
for ch in s:
if ch == c:
if s[index:index+len[char]] == char:
return index
index += 1
return -1
print[find_str["Happy birthday", "py"]]
print[find_str["Happy birthday", "rth"]]
print[find_str["Happy birthday", "rh"]]
7 không. Điều này có thể hiệu quả hơn nếu bạn biết rằng hầu hết các lần S1 sẽ không phải là một nền tảng của S2This can be more efficient if you know that most of the times s1 won't be a substring of s2
Vì toán tử
def find_str[s, char]:
index = 0
if char in s:
c = char[0]
for ch in s:
if ch == c:
if s[index:index+len[char]] == char:
return index
index += 1
return -1
print[find_str["Happy birthday", "py"]]
print[find_str["Happy birthday", "rth"]]
print[find_str["Happy birthday", "rh"]]
9 rất hiệu quả s1 in s2
Nó có thể hiệu quả hơn để chuyển đổi:
index = s2.find[s1]
đến
index = -1
if s1 in s2:
index = s2.find[s1]
Điều này rất hữu ích khi
def find_str[s, char]:
index = 0
if char in s:
c = char[0]
for ch in s:
if ch == c:
if s[index:index+len[char]] == char:
return index
index += 1
return -1
print[find_str["Happy birthday", "py"]]
print[find_str["Happy birthday", "rth"]]
print[find_str["Happy birthday", "rh"]]
7 sẽ trở lại -1 rất nhiều.Tôi đã tìm thấy nó nhanh hơn đáng kể kể từ khi
def find_str[s, char]:
index = 0
if char in s:
c = char[0]
for ch in s:
if ch == c:
if s[index:index+len[char]] == char:
return index
index += 1
return -1
print[find_str["Happy birthday", "py"]]
print[find_str["Happy birthday", "rth"]]
print[find_str["Happy birthday", "rh"]]
7 được gọi là nhiều lần trong thuật toán của tôi, vì vậy tôi nghĩ rằng nó đáng được đề cậpĐã trả lời ngày 14 tháng 6 năm 2019 lúc 15:46Jun 14, 2019 at 15:46
GerrygerryGerry
Phù hiệu bằng đồng 11166 bronze badges
Đây là một cách tiếp cận đơn giản:
my_string = 'abcdefg'
print[text.find['def']]
Output:
3
Tôi là chất nền không có ở đó, bạn sẽ nhận được -1. Ví dụ:-1. For example:
s = "Happy Birthday"
s2 = "py"
print[s.find[s2]]
0Output:
-1
Đôi khi, bạn có thể muốn ném ngoại lệ nếu không có chất nền:
s = "Happy Birthday"
s2 = "py"
print[s.find[s2]]
1Output:
Traceback [cuộc gọi gần đây nhất cuối cùng]:
Tệp "test.py", dòng 6, in in [text.index ['xyz']]] print[text.index['xyz']]
ValueError: không tìm thấy chuỗi con
Đã trả lời ngày 17 tháng 5 năm 2020 lúc 14:10May 17, 2020 at 14:10
Ali Sajjadali SajjadAli Sajjad
2.68922 huy hiệu bạc34 huy hiệu đồng22 silver badges34 bronze badges
Cuối bữa tiệc, đã tìm kiếm giống nhau, vì "In" không hợp lệ, tôi vừa tạo ra sau.
s = "Happy Birthday"
s2 = "py"
print[s.find[s2]]
2sản xuất
3
8
-1
loại bỏ thấp hơn [] trong trường hợp trường hợp không cần thiết không cần thiết.
Đã trả lời ngày 28 tháng 6 năm 2017 lúc 21:45Jun 28, 2017 at 21:45
ParthparthParth
Phim huy hiệu bạc 21711 silver badge8 bronze badges
Không trả lời trực tiếp câu hỏi nhưng gần đây tôi đã có một câu hỏi tương tự, nơi tôi được yêu cầu đếm số lần một chuỗi phụ được lặp lại trong một chuỗi nhất định. Đây là chức năng tôi đã viết:
s = "Happy Birthday"
s2 = "py"
print[s.find[s2]]
4Hàm Find [] có thể chỉ trả về chỉ số của nắm tay. Lưu trữ chỉ mục thay cho chỉ đếm, có thể cung cấp cho chúng ta bộ chỉ số riêng biệt mà chuỗi phụ được lặp lại trong chuỗi.
Tuyên bố miễn trừ trách nhiệm: Tôi là 'cực đoan' mới đối với lập trình Python.
Đã trả lời ngày 24 tháng 5 năm 2018 lúc 21:21May 24, 2018 at 21:21