regexp_02.py

#!/usr/bin/python3
# ===================================================================
# this demo replaces sub-strings with other strings, etc.
# and display the modified strings
# -------------------------------------------------------------------
# 1. remove '_data' from the initial strings
# 2. replace '.txt' with '.txt' in the initial strings
# 3. convert modified strings to lowwercase
# 4. print out the resulting strings
# ===================================================================

import re

# ---- test input data

oldstrs = [ 'ABC_data.dat', 'def_DATA.dat', 'ghi_data.dat',
            'JKL.DAT', 'xyz.dat', 'oops.xxx' ]


# -------------------------------------------------------------------
# return a list of modified strings
# -------------------------------------------------------------------
# regexp patterns are raw (r) strings
# -------------------------------------------------------------------
# Python Doc: re.sub(pattern,repl,string,count=0,flags=0)
#             (if no match is found, the input string is returned)
# -------------------------------------------------------------------

def create_new_list(oldlst):

    newlst = []

    count = 0

    for s in oldlst:

        # ---- remove '_data' sub-string

        s1 = re.sub(r'_data','',s,flags=re.IGNORECASE)

        # ---- replace '.dat' sub-string

        s2 = re.sub(r'\.dat$','.txt',s1,flags=re.IGNORECASE)

        ##print('>> {}'.format(s2))

        # ---- convert to lowercase

        s3 = s2.lower()
        
        # ---- add new strings to the returned list

        newlst.append(s3)

        count += 1

    # ---- return list

    print("{} new strings returned".format(count))

    return newlst


# -------------------------------------------------------------------
# main
# -------------------------------------------------------------------

if __name__ == '__main__':

    ##print(oldstrs)

    newstrs = create_new_list(oldstrs)

    for s in newstrs:
        print(s)