Hướng dẫn python exact string match in string - khớp chuỗi chính xác python trong chuỗi

Về cơ bản tôi cần tìm cách tìm ra cách tìm từ chính xác trong một chuỗi. Tất cả thông tin tôi đã đọc trực tuyến chỉ cho tôi cách tìm kiếm các chữ cái trong một chuỗi để

98787 Điều này là chính xác

Sẽ vẫn trở lại đúng trong một tuyên bố IF.

Đây là những gì tôi có cho đến nay.

  elif 'This is correct' in text:
    print("correct")

Điều này sẽ hoạt động với bất kỳ sự kết hợp nào của các chữ cái trước chính xác ... ví dụ FKRJCorrect, 4123Correct và LolCorrect đều sẽ trở lại đúng trong câu lệnh IF. Khi tôi muốn nó trở lại chỉ đúng nếu nó khớp chính xác với "Điều này là chính xác"

Hỏi ngày 5 tháng 9 năm 2013 lúc 9:22Sep 5, 2013 at 9:22

Hướng dẫn python exact string match in string - khớp chuỗi chính xác python trong chuỗi

5

Bạn có thể sử dụng các từ giới hạn của các biểu thức thông thường. Thí dụ:

import re

s = '98787This is correct'
for words in ['This is correct', 'This', 'is', 'correct']:
    if re.search(r'\b' + words + r'\b', s):
        print('{0} found'.format(words))

Sản lượng đó:

is found
correct found

Chỉnh sửa: Để phù hợp chính xác, hãy thay thế các xác nhận

import re

s = '98787This is correct'
for words in ['This is correct', 'This', 'is', 'correct']:
    if re.search(r'\b' + words + r'\b', s):
        print('{0} found'.format(words))
0 bằng
import re

s = '98787This is correct'
for words in ['This is correct', 'This', 'is', 'correct']:
    if re.search(r'\b' + words + r'\b', s):
        print('{0} found'.format(words))
1 và
import re

s = '98787This is correct'
for words in ['This is correct', 'This', 'is', 'correct']:
    if re.search(r'\b' + words + r'\b', s):
        print('{0} found'.format(words))
2 để hạn chế trận đấu đến đầu và cuối dòng.
: For an exact match, replace
import re

s = '98787This is correct'
for words in ['This is correct', 'This', 'is', 'correct']:
    if re.search(r'\b' + words + r'\b', s):
        print('{0} found'.format(words))
0 assertions with
import re

s = '98787This is correct'
for words in ['This is correct', 'This', 'is', 'correct']:
    if re.search(r'\b' + words + r'\b', s):
        print('{0} found'.format(words))
1 and
import re

s = '98787This is correct'
for words in ['This is correct', 'This', 'is', 'correct']:
    if re.search(r'\b' + words + r'\b', s):
        print('{0} found'.format(words))
2 to restrict the match to the begin and end of line.

Đã trả lời ngày 5 tháng 9 năm 2013 lúc 9:39Sep 5, 2013 at 9:39

BireibireiBirei

35K2 Huy hiệu vàng70 Huy hiệu bạc80 Huy hiệu Đồng2 gold badges70 silver badges80 bronze badges

1

Sử dụng toán tử so sánh

import re

s = '98787This is correct'
for words in ['This is correct', 'This', 'is', 'correct']:
    if re.search(r'\b' + words + r'\b', s):
        print('{0} found'.format(words))
3 thay vì
import re

s = '98787This is correct'
for words in ['This is correct', 'This', 'is', 'correct']:
    if re.search(r'\b' + words + r'\b', s):
        print('{0} found'.format(words))
4 sau đó:

if text == 'This is correct':
    print("Correct")

Điều này sẽ kiểm tra xem toàn bộ chuỗi chỉ là

import re

s = '98787This is correct'
for words in ['This is correct', 'This', 'is', 'correct']:
    if re.search(r'\b' + words + r'\b', s):
        print('{0} found'.format(words))
5. Nếu không, nó sẽ là
import re

s = '98787This is correct'
for words in ['This is correct', 'This', 'is', 'correct']:
    if re.search(r'\b' + words + r'\b', s):
        print('{0} found'.format(words))
6

Đã trả lời ngày 5 tháng 9 năm 2013 lúc 9:24Sep 5, 2013 at 9:24

Hướng dẫn python exact string match in string - khớp chuỗi chính xác python trong chuỗi

TerryaterryaTerryA

57.3K11 Huy hiệu vàng117 Huy hiệu bạc139 Huy hiệu đồng11 gold badges117 silver badges139 bronze badges

2

Trên thực tế, bạn nên tìm kiếm chuỗi 'Đây là chính xác' được bao quanh bởi các ranh giới từ.

Vì thế

import re

if re.search(r'\bThis is correct\b', text):
    print('correct')

nên làm việc cho bạn.

Đã trả lời ngày 5 tháng 9 năm 2013 lúc 13:17Sep 5, 2013 at 13:17

Sharcashmosharcashmosharcashmo

7651 Huy hiệu vàng7 Huy hiệu bạc15 Huy hiệu đồng1 gold badge7 silver badges15 bronze badges

Tôi nghi ngờ rằng bạn đang tìm kiếm chức năng

import re

s = '98787This is correct'
for words in ['This is correct', 'This', 'is', 'correct']:
    if re.search(r'\b' + words + r'\b', s):
        print('{0} found'.format(words))
7. Điều này kiểm tra xem liệu các ký tự trong một chuỗi khớp khi bắt đầu chuỗi khác

"abcde".startswith("abc") -> true

"abcde".startswith("bcd") -> false

Ngoài ra còn có chức năng

import re

s = '98787This is correct'
for words in ['This is correct', 'This', 'is', 'correct']:
    if re.search(r'\b' + words + r'\b', s):
        print('{0} found'.format(words))
8, để kiểm tra ở đầu kia.

Đã trả lời ngày 5 tháng 9 năm 2013 lúc 13:08Sep 5, 2013 at 13:08

Simon Callansimon CallanSimon Callan

2.9821 Huy hiệu vàng25 Huy hiệu bạc32 Huy hiệu đồng1 gold badge25 silver badges32 bronze badges

Bạn có thể thực hiện một vài thay đổi.

elif 'This is correct' in text[:len('This is correct')]:

hoặc

elif ' This is correct ' in ' '+text+' ':

Cả hai đều làm việc. Sau này linh hoạt hơn.

Đã trả lời ngày 5 tháng 9 năm 2013 lúc 10:48Sep 5, 2013 at 10:48

4

Dưới đây là một giải pháp mà không sử dụng biểu thức chính quy. Chương trình tìm kiếm từ chính xác trong trường hợp này là 'sòng bạc' và in câu.

    words_list = [ "The Learn Python Challenge Casino.", "They bought a car while at 
    the casino", "Casinoville" ]
    search_string = 'CASINO'
    def text_manipulation(words_list, search_string):
        search_result = []
        for sentence in words_list:
            words = sentence.replace('.', '').replace(',', '').split(' ')
            [search_result.append(sentence) for w in words if w.upper() == 
              search_string]
        print(search_result)

    text_manipulation(words_list, search_string)

Điều này sẽ in kết quả - ['The Learn Python Challenge Casino.', 'Họ đã mua một chiếc xe trong khi ở sòng bạc']]

Đã trả lời ngày 12 tháng 10 năm 2019 lúc 4:47Oct 12, 2019 at 4:47

Hướng dẫn python exact string match in string - khớp chuỗi chính xác python trong chuỗi

Nó có thể là một vấn đề phức tạp nếu chúng ta muốn giải quyết nó mà không cần sử dụng biểu thức thông thường. Nhưng tôi đã nghĩ ra một mẹo nhỏ.

  • Đầu tiên chúng ta cần đệm chuỗi ban đầu với khoảng trắng.
  • Sau đó, chúng ta có thể tìm kiếm văn bản, cũng được đệm bằng khoảng trắng.

Mã ví dụ ở đây:

incorrect_str = "98787This is correct"
correct_str = "This is a great day and This is correct"

# Padding with whitespaces
new_incorrect_str = " " + incorrect_str + " "
new_correct_str = " " + correct_str + " "

if " This is correct " in new_correct_str:
    print("correct")
else:
    print("incorrect")

Đã trả lời ngày 15 tháng 9 năm 2021 lúc 21:02Sep 15, 2021 at 21:02

Hướng dẫn python exact string match in string - khớp chuỗi chính xác python trong chuỗi

Chia chuỗi thành một danh sách các chuỗi với .split () sau đó sử dụng toán tử trong.

Điều này đơn giản hơn nhiều so với sử dụng các biểu thức thông thường.

Đã trả lời ngày 15 tháng 1 năm 2017 lúc 12:03Jan 15, 2017 at 12:03

ToshirotoshiroToshiro

3352 Huy hiệu vàng5 Huy hiệu bạc14 Huy hiệu đồng2 gold badges5 silver badges14 bronze badges

1

Làm thế nào để bạn khớp một từ trong một chuỗi trong Python?

Bạn có thể sử dụng từ metacharacter Boundary '\ b' để chỉ khớp với toàn bộ từ.Bạn có thể phù hợp với sự nhạy cảm của trường hợp bằng cách sử dụng đối số cờ Re.BỎ QUA TRƯỜNG HỢP .Bạn có thể khớp không chỉ một mà tất cả các lần xuất hiện của một từ trong một chuỗi bằng cách sử dụng RE.use the word boundary metacharacter '\b' to match only whole words. You can match case-insensitive by using the flags argument re. IGNORECASE . You can match not only one but all occurrences of a word in a string by using the re.

Tôi có thể sử dụng == để so sánh các chuỗi trong Python không?

Các toán tử so sánh Python có thể được sử dụng để so sánh các chuỗi trong Python.Các toán tử này là: bằng (==), không bằng (! =), Lớn hơn (>), nhỏ hơn (<), nhỏ hơn hoặc bằng (=).. These operators are: equal to ( == ), not equal to ( != ), greater than ( > ), less than ( < ), less than or equal to ( <= ), and greater than or equal to ( >= ).