25

I have a list in python with some strings, and I need to know witch item in the list is like "A1_8301". This "_" means that can be any char. Is there a quick way to do that?

If I was using SQL, i just type something like "where x like "A1_8301"

Thank you!

2 Answers 2

18

In Python you'd use a regular expression:

import re

pattern = re.compile(r'^A1.8301$')
matches = [x for x in yourlist if pattern.match(x)]

This produces a list of elements that match your requirements.

  • The ^ and $ anchors are needed to prevent substring matches; BA1k8301-42 should not match, for example. The re.match() call will only match at the start of the tested string, but using ^ makes this a little more explicit and mirrors the $ for the end-of-string anchor nicely.
  • The _ in a SQL like is translated to ., meaning match one character.
Sign up to request clarification or add additional context in comments.

Comments

5

regular expressions are probably the way to go. IIRC, % should map to .* and _ should map to ..

matcher = re.compile('^A1.8301$')
list_of_string = [s for s in stringlist if matcher.match(s)]

2 Comments

Good point, although only substrings at the beginning of the string since we're using re.match rather than re.search... In any event, I've updated.
Yeah, I added it for that reason.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.