Hướng dẫn how to find a word in a text in python - cách tìm một từ trong văn bản trong python

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 to find a word in a text in python - cách tìm một từ trong văn bản trong python

mkrieger1

16.2k4 Huy hiệu vàng50 Huy hiệu bạc58 Huy hiệu Đồng4 gold badges50 silver badges58 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 115K150575 Huy hiệu bạc887 Huy hiệu đồng150 gold badges575 silver badges887 bronze badges

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

FabriziomfabriziomfabrizioM

45.2K15 Huy hiệu vàng98 Huy hiệu bạc117 Huy hiệu đồng15 gold badges98 silver badges117 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

54.1K7 Huy hiệu vàng82 Huy hiệu bạc98 Huy hiệu Đồng7 gold badges82 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àng65 Huy hiệu bạc130 Huy hiệu đồng11 gold badges65 silver badges130 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 115K150575 Huy hiệu bạc887 Huy hiệu đồng150 gold badges575 silver badges887 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

45.2K15 Huy hiệu vàng98 Huy hiệu bạc117 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 115K150575 Huy hiệu bạc887 Huy hiệu đồng150 gold badges575 silver badges887 bronze badges

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

FabriziomfabriziomCorvax

45.2K15 Huy hiệu vàng98 Huy hiệu bạc117 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

54.1K7 Huy hiệu vàng82 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

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:

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

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:32

13.3k11 Huy hiệu vàng65 Huy hiệu bạc130 Huy hiệu đồng9 gold badges57 silver badges81 bronze badges

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.Jun 15, 2012 at 7:23

Matt Howellmatt HowelldaSong

15,5K7 Huy hiệu vàng47 Huy hiệu bạc56 Huy hiệu Đồng1 gold badge5 silver badges9 bronze badges

1

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

Đã trả lời ngày 1 tháng 12 năm 2016 lúc 18:26split(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

Corvaxcorvax

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

7547 Huy hiệu bạc12 Huy hiệu đồngseparator argument like this:

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

Martin Thoma

Huy hiệu vàng 115K150575 Huy hiệu bạc887 Huy hiệu đồng150 gold badges575 silver badges887 bronze badges

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

Fabriziomfabriziomtstempko

45.2K15 Huy hiệu vàng98 Huy hiệu bạc117 Huy hiệu đồng1 gold badge15 silver badges17 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

54.1K7 Huy hiệu vàng82 Huy hiệu bạc98 Huy hiệu ĐồngMartin Thoma

Huy hiệu vàng 115K150575 Huy hiệu bạc887 Huy hiệu đồng150 gold badges575 silver badges887 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 115K150575 Huy hiệu bạc887 Huy hiệu đồng150 gold badges575 silver badges887 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 to find a word in a text in python - cách tìm một từ trong văn bản trong python

FabriziomfabriziomRameez

45.2K15 Huy hiệu vàng98 Huy hiệu bạc117 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

54.1K7 Huy hiệu vàng82 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

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:marcio

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

Đã 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!')
1

13.3k11 Huy hiệu vàng65 Huy hiệu bạc130 Huy hiệu đồng

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

Martin Thoma

Huy hiệu vàng 115K150575 Huy hiệu bạc887 Huy hiệu đồng150 gold badges575 silver badges887 bronze badges

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.Feb 26, 2015 at 14:23

Matt Howellmatt HowellPyGuy

15,5K7 Huy hiệu vàng47 Huy hiệu bạc56 Huy hiệu Đồng3 bronze badges

1

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

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

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

Martin Thoma

Huy hiệu vàng 115K150575 Huy hiệu bạc887 Huy hiệu đồng150 gold badges575 silver badges887 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

Huy hiệu vàng 19.1k5050 gold badges157 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

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