A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://www.geeksforgeeks.org/python/python-find-close-matches-input-string-list/ below:

Python - Find all close matches of input string from a list

Python - Find all close matches of input string from a list

Last Updated : 03 Jan, 2025

In Python, there are multiple ways to find all close matches of a given input string from a list of strings.

Using startswith()

startswith() function is used to identify close matches for the input string. It checks if either the strings in the list start with the input or if the input starts with them.

Python
s = ["Lion", "Li", "Tiger", "Tig"]
a = "Lion"

# Iterate through each string in the list
for string in s:
    if string.startswith(a) or a.startswith(string):
        print(string, end=" ")

Explanation:

Let's understand various other methods to Find all close matches of input string from a list.

Using String Slicing

Substring comparison can be used to identify matches. By checking if one string is a prefix of another, close matches can be determined.

Python
s = ["Lion", "Li", "Tiger", "Tig"]
a = "Lion"

#Iterate through each string in a list
for string in s:
    if string[:len(a)] == a or a[:len(string)] == string:
        print(string, end=" ")

Explanation:

Two-Pointer Technique (Sorted)

If the list is sorted, you can use a two-pointer approach to check prefixes:

Python
s = ["Lion", "Li", "Tiger", "Tig"]
a = "Lion"

#Sort the list of strings to process in order
s.sort()

 # Initialize two pointers: `i` starts at the beginning, 
  #`j` at the end of the list
i, j = 0, len(s) - 1

#Initialize ana empty list
result = []

#Use a while loop to iterate through the list 
while i <= j:
    if s[i].startswith(a) or a.startswith(s[i]):
        result.append(s[i])
    i += 1

print(" ".join(result))

Explanation:

Using Regular Expressions

Regular expressions allow you to match patterns efficiently:

Python
import re

s = ["Lion", "Li", "Tiger", "Tig"]
a = "Lion"

# Create a regex pattern that checks if a string starts with `a` 
# or if it starts with any string in `s`
regex = f"^{re.escape(a)}|^{re.escape('|'.join(s))}"

# - `re.escape(a)` escapes special characters in `a` 
# (if any) to avoid regex errors.
# - `re.escape('|'.join(s))` joins all strings in 
matches = [string for string in s if re.match(regex, string) or re.match(regex, a)]
print(" ".join(matches))

Explanation :



RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4