findall() | returning list with all matches |
search() | returns matching object, if existing |
split() | returns list of fragments |
replace() | replacing one or many matches |
| [] | set of characters |
| \ | special sequence (escape character) |
| . | as single character (except newline) |
| ^ | starts with |
| $ | ends with |
| * | zero or more occurrences |
| + | one or more occurrences |
| ? | zero or one occurrences |
| {} | exactly the specified number of occurrences |
| | | either or |
| () | capture and grouping |
#!/usr/bin/env python3
import re # regular expressions
txt = "The rain in Spain falls mostly in ..."
xFind = re.findall("in", txt)
print("xFind : ", xFind)
xSplit = re.split(" ", txt)
print("xSplit : ", xSplit)
# splitting at first position \s == space
xSplit_1 = re.split("\s", txt, 1)
print("xSplit_1: ", xSplit_1)
# replace 3 times
xSub = re.sub("\s", "_", txt, 3)
print("xSub : ", xSub)
# search for an upper case "S" character in the beginning of a word
# and print its position:
# span() returns tuple with starting/ending index
xSpan = re.search(r"\bS\w+", txt)
print("xSpan : ", xSpan.span())
lambda expressions are inline functions() at the end for immediate call
\
x%2 and 'odd' or 'even'
'odd' if x%2 else 'even'
#!/usr/bin/env python3
print("*************************")
print("simple lambda expressions")
print("*************************")
x = lambda a : a + 10
print("lambda a : a + 10 :",x(5))
y = lambda a, b : a * b
print("lambda a, b : a * b :",y(5, 6))
# line continuation
# no empty space after '\'
z = lambda x: \
'odd' if x%2 else 'even' # inline 'if then else"
# x % 2 and 'odd' or 'even' # identical
print("\'odd\' if x%2 else \'even\' :",z(5))
print()
print("**************************************")
print("function returning a lambda expression")
print("**************************************")
def myfunc(n):
return lambda a : a * n
mytripler = myfunc(3)
# equivalent to
# mytripler = lambda a : a*3
print("return lambda a : a * n :",mytripler(11))
print()
print("**************")
print("direct calling")
print("**************")
print("(lambda x: x + 1)(2) :",(lambda x: x + 1)(2))
var.__add__(5) var+5
dir(int): directory listing of
magic methods (for int class)
#!/usr/bin/env python3
# as simple function
def myFunction(a):
return a**2
# intVar+5 is just a short for
# intVar.__add__(5)
intVar = 10
print("using __add__() : ", intVar+5, intVar.__add__(5))
print()
print("*******************")
print("content of dir(int)")
print("*******************")
print()
for mF in dir(int): # dir: directory of magic methods
print(mF)
print()
print("**************************")
print("content of dir(myFunction)")
print("**************************")
print()
for mF in dir(myFunction):
print(mF)
threading.Thread() threading.Timer() if (__name__ == "__main__"):
#!/usr/bin/env python3
import threading # omen est nomen
import time
class DeltaT:
myTime = time.perf_counter()
def diff():
newTime = time.perf_counter()
deltaTime = newTime - DeltaT.myTime
DeltaT.myTime = newTime
return deltaTime
def taskFunction(name):
print(f'Thread {name:2d}: starting')
time.sleep(3)
print(f'Thread {name:2d}: finishing')
# blocks out-of-us access
if __name__ == "__main__":
print(DeltaT.diff())
print(f'Main {DeltaT.diff():4.2f} : before creating thread')
x = threading.Thread(target=taskFunction, args=(1,))
print(f'Main {DeltaT.diff():4.2f} : before running the thread')
time.sleep(2)
x.start() # can be started anywhere
print(f'Main {DeltaT.diff():4.2f} : waiting for the thread to finish')
x.join() # stop until thread is done
print(f'Main {DeltaT.diff():4.2f} : all done')
time.sleep() interrupt current thread (in seconds)
threading.Timer() timer object
#!/usr/bin/env python3
import time # time manipulation, sleeping
import threading as thr # threading
# a random target task function
def taskFuntion(message):
# time.sleep(3.0) # test it
print(message)
#
# thread timer object invokes a task function with arguments
#
timer = thr.Timer(3, taskFuntion, args=('timer function executed',))
timer.start()
# counting while waiting for the timer to finish
counting = 0
while (timer.is_alive()): # try with 'not'
time.sleep(0.3) # sleeping in seconds
counting += 1
print("counting while waiting ", counting)
# cancel the thread
if (timer.is_alive()):
print('canceling the timer')
timer.cancel()
time.time() elapsed timetime.perf_counter() used time
#!/usr/bin/env python3 import math import time # times in seconds since last call class DeltaT: myTime = time.perf_counter() def diff(): newTime = time.perf_counter() deltaTime = newTime - DeltaT.myTime DeltaT.myTime = newTime return deltaTime print(time.perf_counter()) print() print(DeltaT.diff()) for i in range(int(1e7)): pow(math.log(i+1.0,10),math.log(i+1.0,10)) print(DeltaT.diff(), " time used (in secconds)")