Home > database >  Format message by calling a written python function name in string
Format message by calling a written python function name in string

Time:02-25

I have functions

def getName():
   name = "Mark"
   return name

def getDay():
   day = "Tuesday"
   return day

I have a variable

message = "Hi there [getName] today is [getDay]"

I need to check all occurences for the strings between the square brackets in my message variable and check whether that name is a function that exists so that I can evaluate the value returned by the function and finally come up with a new message string as follows

message = "Hi there Mark, today is Tuesday

CodePudding user response:

print(f"Hi there {getName()} today is {getDay()}")

CodePudding user response:

There is another way of achieving this if you specifically want to use the string in that format. However, fstrings as shown in the above answer are a much superior alternative.

def f(message):
    returned_value=''
    m_copy=message
    while True:
        if '[' in m_copy:
            returned_value =m_copy[:m_copy.index('[')]
            returned_value =globals()[m_copy[m_copy.index('[') 1:m_copy.index(']')]]()
            m_copy=m_copy[m_copy.index(']') 1:]
        else:
            return returned_value m_copy

CodePudding user response:

import re

message = "Hi there [getName] today is [getDay]"
b = re.findall(r'\[.*?\]',message)
s=[]
for i in b:
    s.append(i.strip('[]'))
print(s)

Output:

['getName', 'getDay']
  • Related