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.
Usingstartswith()
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.
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:
string.startswith(a)
: Checks if the current string from the list s
starts with the string a
.a.startswith(string)
: Checks if the string a
starts with the current string from the list s
.Let's understand various other methods to Find all close matches of input string from a list.
Using String SlicingSubstring 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:
string[:len(a)] == a
: Extracts the first len(a)
characters of string
to check if string
starts with a
.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:
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