Hướng dẫn how do i find a specific word in a string python? - làm cách nào để tìm một từ cụ thể trong chuỗi python?

230

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang làm việc với Python và tôi đang cố gắng tìm hiểu xem bạn có thể biết một từ có ở trong một chuỗi không.

Tôi đã tìm thấy một số thông tin về việc xác định nếu từ có trong chuỗi - sử dụng

if 'seek' in 'those who seek shall find':
    print('Success!')
7, nhưng có cách nào để thực hiện câu lệnh
if 'seek' in 'those who seek shall find':
    print('Success!')
8. Tôi muốn có một cái gì đó như sau:

if string.find(word):
    print("success")

Hướng dẫn how do i find a specific word in a string python? - làm cách nào để tìm một từ cụ thể trong chuỗi python?

mkrieger1

15.9k4 Huy hiệu vàng48 Huy hiệu bạc57 Huy hiệu Đồng4 gold badges48 silver badges57 bronze badges

hỏi ngày 16 tháng 3 năm 2011 lúc 1:10Mar 16, 2011 at 1:10

1

Co chuyện gi sai vơi:

if word in mystring: 
   print('success')

Martin Thoma

Huy hiệu vàng 114K148574 Huy hiệu bạc877 Huy hiệu đồng148 gold badges574 silver badges877 bronze badges

Đã trả lời ngày 16 tháng 3 năm 2011 lúc 1:13Mar 16, 2011 at 1:13

FabriziomfabriziomfabrizioM

45K15 Huy hiệu vàng98 Huy hiệu bạc115 Huy hiệu đồng15 gold badges98 silver badges115 bronze badges

13

if 'seek' in 'those who seek shall find':
    print('Success!')

Nhưng hãy nhớ rằng điều này phù hợp với một chuỗi các ký tự, không nhất thiết là toàn bộ từ - ví dụ,

if 'seek' in 'those who seek shall find':
    print('Success!')
9 là đúng. Nếu bạn chỉ muốn khớp với toàn bộ từ, bạn nên sử dụng các biểu thức thông thường:

import re

def findWholeWord(w):
    return re.compile(r'\b({0})\b'.format(w), flags=re.IGNORECASE).search

findWholeWord('seek')('those who seek shall find')    # -> 
findWholeWord('word')('swordsmith')                   # -> None

Đã trả lời ngày 16 tháng 3 năm 2011 lúc 1:52Mar 16, 2011 at 1:52

Hugh Bothwellhugh BothwellHugh Bothwell

53,9K7 Huy hiệu vàng81 Huy hiệu bạc98 Huy hiệu Đồng7 gold badges81 silver badges98 bronze badges

6

Nếu bạn muốn tìm hiểu xem toàn bộ một từ có nằm trong danh sách các từ được phân tách không gian hay không, chỉ cần sử dụng:

def contains_word(s, w):
    return (' ' + w + ' ') in (' ' + s + ' ')

contains_word('the quick brown fox', 'brown')  # True
contains_word('the quick brown fox', 'row')    # False

Phương pháp thanh lịch này cũng là nhanh nhất. So với cách tiếp cận của Hugh Bothwell và Dasong:

>python -m timeit -s "def contains_word(s, w): return (' ' + w + ' ') in (' ' + s + ' ')" "contains_word('the quick brown fox', 'brown')"
1000000 loops, best of 3: 0.351 usec per loop

>python -m timeit -s "import re" -s "def contains_word(s, w): return re.compile(r'\b({0})\b'.format(w), flags=re.IGNORECASE).search(s)" "contains_word('the quick brown fox', 'brown')"
100000 loops, best of 3: 2.38 usec per loop

>python -m timeit -s "def contains_word(s, w): return s.startswith(w + ' ') or s.endswith(' ' + w) or s.find(' ' + w + ' ') != -1" "contains_word('the quick brown fox', 'brown')"
1000000 loops, best of 3: 1.13 usec per loop

Chỉnh sửa: Một biến thể nhỏ về ý tưởng này cho Python 3.6+, nhanh không kém: A slight variant on this idea for Python 3.6+, equally fast:

def contains_word(s, w):
    return f' {w} ' in f' {s} '

Đã trả lời ngày 11 tháng 4 năm 2016 lúc 20:32Apr 11, 2016 at 20:32

user200783user200783user200783

13.3k11 Huy hiệu vàng64 Huy hiệu bạc126 Huy hiệu đồng11 gold badges64 silver badges126 bronze badges

6

Tìm trả về một số nguyên đại diện cho chỉ số nơi tìm thấy mục tìm kiếm. Nếu nó không được tìm thấy, nó sẽ trả về -1.

haystack = 'asdf'

haystack.find('a') # result: 0
haystack.find('s') # result: 1
haystack.find('g') # result: -1

if haystack.find(needle) >= 0:
  print('Needle found.')
else:
  print('Needle not found.')

Martin Thoma

Huy hiệu vàng 114K148574 Huy hiệu bạc877 Huy hiệu đồng148 gold badges574 silver badges877 bronze badges

Đã trả lời ngày 16 tháng 3 năm 2011 lúc 1:13Mar 16, 2011 at 1:13

FabriziomfabriziomMatt Howell

45K15 Huy hiệu vàng98 Huy hiệu bạc115 Huy hiệu đồng7 gold badges47 silver badges56 bronze badges

0

Nhưng hãy nhớ rằng điều này phù hợp với một chuỗi các ký tự, không nhất thiết là toàn bộ từ - ví dụ,

if 'seek' in 'those who seek shall find':
    print('Success!')
9 là đúng. Nếu bạn chỉ muốn khớp với toàn bộ từ, bạn nên sử dụng các biểu thức thông thường:

if word in string.split():
    print("success")

Martin Thoma

Huy hiệu vàng 114K148574 Huy hiệu bạc877 Huy hiệu đồng148 gold badges574 silver badges877 bronze badges

Đã trả lời ngày 16 tháng 3 năm 2011 lúc 1:13Dec 1, 2016 at 18:26

FabriziomfabriziomCorvax

45K15 Huy hiệu vàng98 Huy hiệu bạc115 Huy hiệu đồng7 silver badges12 bronze badges

3

Nhưng hãy nhớ rằng điều này phù hợp với một chuỗi các ký tự, không nhất thiết là toàn bộ từ - ví dụ,

if 'seek' in 'those who seek shall find':
    print('Success!')
9 là đúng. Nếu bạn chỉ muốn khớp với toàn bộ từ, bạn nên sử dụng các biểu thức thông thường:

Đã trả lời ngày 16 tháng 3 năm 2011 lúc 1:52

def find_words(text, search):
    """Find exact words"""
    dText   = text.split()
    dSearch = search.split()

    found_word = 0

    for text_word in dText:
        for search_word in dSearch:
            if search_word == text_word:
                found_word += 1

    if found_word == len(dSearch):
        return lenSearch
    else:
        return False

usage:

if word in mystring: 
   print('success')
0

Hugh Bothwellhugh BothwellJun 22, 2012 at 22:51

53,9K7 Huy hiệu vàng81 Huy hiệu bạc98 Huy hiệu ĐồngGuray Celik

Nếu bạn muốn tìm hiểu xem toàn bộ một từ có nằm trong danh sách các từ được phân tách không gian hay không, chỉ cần sử dụng:1 gold badge14 silver badges13 bronze badges

0

def contains_word(s, w):
    return (' ' + w + ' ') in (' ' + s + ' ')

contains_word('the quick brown fox', 'brown')  # True
contains_word('the quick brown fox', 'row')    # False

if word in mystring: 
   print('success')
1

Phương pháp thanh lịch này cũng là nhanh nhất. So với cách tiếp cận của Hugh Bothwell và Dasong:

Chỉnh sửa: Một biến thể nhỏ về ý tưởng này cho Python 3.6+, nhanh không kém:

Đã trả lời ngày 11 tháng 4 năm 2016 lúc 20:329 gold badges57 silver badges81 bronze badges

13.3k11 Huy hiệu vàng64 Huy hiệu bạc126 Huy hiệu đồngJun 15, 2012 at 7:23

Tìm trả về một số nguyên đại diện cho chỉ số nơi tìm thấy mục tìm kiếm. Nếu nó không được tìm thấy, nó sẽ trả về -1.daSong

haystack = 'asdf'

haystack.find('a') # result: 0
haystack.find('s') # result: 1
haystack.find('g') # result: -1

if haystack.find(needle) >= 0:
  print('Needle found.')
else:
  print('Needle not found.')
1 gold badge5 silver badges9 bronze badges

1

Matt Howellmatt Howell

15.4K7 Huy hiệu vàng47 Huy hiệu bạc56 Huy hiệu Đồngsplit(separator, num) method for that. It returns a list of all the words in the string, using separator as the separator. If separator is unspecified it splits on all whitespace (optionally you can limit the number of splits to num).

if word in mystring: 
   print('success')
2

Bạn có thể chia chuỗi thành các từ và kiểm tra danh sách kết quả.

if word in mystring: 
   print('success')
3

Đã trả lời ngày 1 tháng 12 năm 2016 lúc 18:26separator argument like this:

if word in mystring: 
   print('success')
4

Martin Thoma

Huy hiệu vàng 114K148574 Huy hiệu bạc877 Huy hiệu đồng148 gold badges574 silver badges877 bronze badges

Đã trả lời ngày 16 tháng 3 năm 2011 lúc 1:13Dec 18, 2017 at 11:44

Fabriziomfabriziomtstempko

45K15 Huy hiệu vàng98 Huy hiệu bạc115 Huy hiệu đồng1 gold badge14 silver badges16 bronze badges

2

Nhưng hãy nhớ rằng điều này phù hợp với một chuỗi các ký tự, không nhất thiết là toàn bộ từ - ví dụ,

if 'seek' in 'those who seek shall find':
    print('Success!')
9 là đúng. Nếu bạn chỉ muốn khớp với toàn bộ từ, bạn nên sử dụng các biểu thức thông thường:

if word in mystring: 
   print('success')
5

Đã trả lời ngày 16 tháng 3 năm 2011 lúc 1:52

Hugh Bothwellhugh BothwellAug 9, 2017 at 10:11

53,9K7 Huy hiệu vàng81 Huy hiệu bạc98 Huy hiệu ĐồngMartin Thoma

Huy hiệu vàng 114K148574 Huy hiệu bạc877 Huy hiệu đồng148 gold badges574 silver badges877 bronze badges

Đã trả lời ngày 16 tháng 3 năm 2011 lúc 1:13

if word in mystring: 
   print('success')
6

Martin Thoma

Huy hiệu vàng 114K148574 Huy hiệu bạc877 Huy hiệu đồng148 gold badges574 silver badges877 bronze badges

Đã trả lời ngày 16 tháng 3 năm 2011 lúc 1:13Nov 2, 2016 at 8:39

Hướng dẫn how do i find a specific word in a string python? - làm cách nào để tìm một từ cụ thể trong chuỗi python?

FabriziomfabriziomRameez

45K15 Huy hiệu vàng98 Huy hiệu bạc115 Huy hiệu đồng5 silver badges11 bronze badges

Nhưng hãy nhớ rằng điều này phù hợp với một chuỗi các ký tự, không nhất thiết là toàn bộ từ - ví dụ,

if 'seek' in 'those who seek shall find':
    print('Success!')
9 là đúng. Nếu bạn chỉ muốn khớp với toàn bộ từ, bạn nên sử dụng các biểu thức thông thường:

if word in mystring: 
   print('success')
7

Đã trả lời ngày 16 tháng 3 năm 2011 lúc 1:52

if word in mystring: 
   print('success')
8

Hugh Bothwellhugh Bothwell

if word in mystring: 
   print('success')
9

Sample:

if 'seek' in 'those who seek shall find':
    print('Success!')
0

53,9K7 Huy hiệu vàng81 Huy hiệu bạc98 Huy hiệu Đồng

Nếu bạn muốn tìm hiểu xem toàn bộ một từ có nằm trong danh sách các từ được phân tách không gian hay không, chỉ cần sử dụng:Dec 26, 2020 at 5:18

def contains_word(s, w):
    return (' ' + w + ' ') in (' ' + s + ' ')

contains_word('the quick brown fox', 'brown')  # True
contains_word('the quick brown fox', 'row')    # False
marcio

Phương pháp thanh lịch này cũng là nhanh nhất. So với cách tiếp cận của Hugh Bothwell và Dasong:5 silver badges16 bronze badges

Chỉnh sửa: Một biến thể nhỏ về ý tưởng này cho Python 3.6+, nhanh không kém:

if 'seek' in 'those who seek shall find':
    print('Success!')
1

Đã trả lời ngày 11 tháng 4 năm 2016 lúc 20:32

if 'seek' in 'those who seek shall find':
    print('Success!')
2

Martin Thoma

Huy hiệu vàng 114K148574 Huy hiệu bạc877 Huy hiệu đồng148 gold badges574 silver badges877 bronze badges

13.3k11 Huy hiệu vàng64 Huy hiệu bạc126 Huy hiệu đồngFeb 26, 2015 at 14:23

Tìm trả về một số nguyên đại diện cho chỉ số nơi tìm thấy mục tìm kiếm. Nếu nó không được tìm thấy, nó sẽ trả về -1.PyGuy

haystack = 'asdf'

haystack.find('a') # result: 0
haystack.find('s') # result: 1
haystack.find('g') # result: -1

if haystack.find(needle) >= 0:
  print('Needle found.')
else:
  print('Needle not found.')
3 bronze badges

1

Matt Howellmatt Howell

Nó đang sử dụng một regex đơn giản:

if 'seek' in 'those who seek shall find':
    print('Success!')
3

Martin Thoma

Huy hiệu vàng 114K148574 Huy hiệu bạc877 Huy hiệu đồng148 gold badges574 silver badges877 bronze badges

Đã trả lời ngày 25 tháng 8 năm 2021 lúc 13:25Aug 25, 2021 at 13:25

Milos Cuculovicmilos CuculovicMilos Cuculovic

Phim huy hiệu vàng 18,9k5050 gold badges156 silver badges264 bronze badges

Một trong những giải pháp là đặt một khoảng trống ở đầu và cuối của từ thử nghiệm. Điều này thất bại nếu từ ở đầu hoặc kết thúc câu hoặc nằm cạnh bất kỳ dấu câu nào. Giải pháp của tôi là viết một hàm thay thế bất kỳ dấu câu nào trong chuỗi kiểm tra bằng khoảng trắng và thêm một khoảng trống vào đầu và cuối hoặc chuỗi kiểm tra và từ kiểm tra, sau đó trả về số lần xuất hiện. Đây là một giải pháp đơn giản loại bỏ sự cần thiết cho bất kỳ biểu thức regex phức tạp nào.

if 'seek' in 'those who seek shall find':
    print('Success!')
4

Để đếm số lần xuất hiện của một từ trong một chuỗi:

if 'seek' in 'those who seek shall find':
    print('Success!')
5

trả về 1

if 'seek' in 'those who seek shall find':
    print('Success!')
6

trả về 1

Sử dụng hàm trong 'if' để kiểm tra xem từ có tồn tại trong một chuỗi không

Đã trả lời ngày 18 tháng 3 lúc 9:37Mar 18 at 9:37

IstuartistuartiStuart

3362 Huy hiệu bạc6 Huy hiệu Đồng2 silver badges6 bronze badges

Làm thế nào để bạn nhận được một từ cụ thể từ một chuỗi trong Python?

Phương pháp số 1: Sử dụng split () Sử dụng hàm chia, chúng ta có thể chia chuỗi thành một danh sách các từ và đây là phương thức chung và được đề xuất nhất nếu người ta muốn hoàn thành nhiệm vụ cụ thể này. Nhưng nhược điểm là nó thất bại trong các trường hợp chuỗi chứa dấu chấm câu.Using split() Using the split function, we can split the string into a list of words and this is the most generic and recommended method if one wished to accomplish this particular task. But the drawback is that it fails in cases the string contains punctuation marks.

Làm thế nào để bạn tìm kiếm một phần của chuỗi trong Python?

Phương thức chuỗi Find () được tích hợp vào thư viện tiêu chuẩn của Python. Nó lấy một chuỗi con làm đầu vào và tìm chỉ mục của nó - nghĩa là vị trí của chuỗi con bên trong chuỗi bạn gọi phương thức trên. is built into Python's standard library. It takes a substring as input and finds its index - that is, the position of the substring inside the string you call the method on.

Làm thế nào để bạn kiểm tra xem một từ cụ thể có trong một chuỗi không?

Bạn có thể sử dụng hàm Php Strpos () để kiểm tra xem một chuỗi có chứa một từ cụ thể hay không.Hàm strpos () trả về vị trí của lần xuất hiện đầu tiên của chuỗi con trong một chuỗi.Nếu chất nền không được tìm thấy, nó sẽ trả về sai.Cũng lưu ý rằng các vị trí chuỗi bắt đầu ở 0, chứ không phải 1.use the PHP strpos() function to check whether a string contains a specific word or not. The strpos() function returns the position of the first occurrence of a substring in a string. If the substring is not found it returns false . Also note that string positions start at 0, and not 1.

Làm cách nào để trích xuất một số từ nhất định từ một chuỗi?

Trích xuất một từ cụ thể từ một chuỗi bằng phương thức find ().Nếu chúng ta muốn trích xuất một từ cụ thể từ chuỗi và chúng ta không biết vị trí chính xác của từ, trước tiên chúng ta có thể tìm thấy vị trí của từ bằng phương thức find () và sau đó chúng ta có thể trích xuất từ bằng cách sử dụng cắt chuỗi.using find() method. If we want to extract a specific word from the string and we do not know the exact position of the word, we can first find the position of the word using find() method and then we can extract the word using string slicing.