TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

<< Back to PYTHON

Python String Between, Before and After Methods

Implement between, before and after methods to find relative substrings. Locate substrings based on surrounding chars.
Between, before, after. Often in parsing text, a string's position relative to other characters is important. For example, a parameter to a method is between two parenthesis.
For simple text languages, these surrounding characters are easy to handle. We can implement a between() method that returns a substring surrounded by two others. This simplifies logic.
Our methods. Let us start. This Python program includes three new methods: between, before and after. We internally call find() and rfind(). These methods return -1 when nothing is found.

And: We use the indexes returned by find() and rfind to get the indexes of the desired string slice.

Substring

Finally: We use the string slice syntax in Python to get substrings of the strings. We thus get substrings relative to other substrings.

Python program that locates relative slices def between(value, a, b): # Find and validate before-part. pos_a = value.find(a) if pos_a == -1: return "" # Find and validate after part. pos_b = value.rfind(b) if pos_b == -1: return "" # Return middle part. adjusted_pos_a = pos_a + len(a) if adjusted_pos_a >= pos_b: return "" return value[adjusted_pos_a:pos_b] def before(value, a): # Find first part and return slice before it. pos_a = value.find(a) if pos_a == -1: return "" return value[0:pos_a] def after(value, a): # Find and validate first part. pos_a = value.rfind(a) if pos_a == -1: return "" # Returns chars after the found string. adjusted_pos_a = pos_a + len(a) if adjusted_pos_a >= len(value): return "" return value[adjusted_pos_a:] # Test the methods with this literal. test = "DEFINE:A=TWO" print(between(test, "DEFINE:", "=")) print(between(test, ":", "=")) print(before(test, ":")) print(before(test, "=")) print(after(test, ":")) print(after(test, "DEFINE:")) print(after(test, "=")) Output A A DEFINE DEFINE:A A=TWO A=TWO TWO
An issue. The between, before and after methods here return an empty string literal when no value is found. A None result is probably a better choice for these error cases.

So: If the None constant is desired, the return statements could be easily modified to return None instead.

None
Simple parsers. I have not needed this code for any Python programs. But often in code I have found that implementing small, domain-specific languages is a good strategy.

And: A program could implement a language, like the one with the DEFINE example, to change settings at runtime.

Tip: This could reduce changes to your Python code. If a variable needs changing, you could just alter the text file.

Finally: Reducing code churn, as with a small configuration file language, can reduce the possibility of new bugs being introduced.

Substring logic can be complex. It is a disaster to be off by one character. Your entire program might fail and ruin your day. With methods that handle this logic, things are easier.
© TheDeveloperBlog.com
The Dev Codes

Related Links:


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf