str.split method without arguments
It does the same filtering as you do. Just skip ' ' argument.
list(dict.fromkeys(list comprehension))
It looks overburdened, right? You can create a set of list comprehension as well:
newlst = list({x for x in txt.split()})
or just
newlst = list(set(txt.split()))
but the best way is
collections.Counter
You're reinventing it with worse time complexity.
Format strings
f-strings lookslook better (but it depends on your task).
Function name
PEP8 advices to use lower case with underscores: print_words_occurence
All together
from collections import Counter
def print_words_occurence(txt):
for word, count in Counter(txt.split()).items():
print(f"[{count}] {word}")
Also consider dividing an algorithmic part and input/output - like yielding a pair (word, count) from the function and outputting it somewhere else.