From 94b44dbd3713be15673a12eb564547ce00d2c5a7 Mon Sep 17 00:00:00 2001 From: Daniel Heras Quesada Date: Sun, 23 Aug 2026 18:16:48 +0200 Subject: [PATCH] feat: string manipulation --- src/modules/primitives/strings.py | 62 ++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/src/modules/primitives/strings.py b/src/modules/primitives/strings.py index 832b6ce..4dd3528 100644 --- a/src/modules/primitives/strings.py +++ b/src/modules/primitives/strings.py @@ -1,7 +1,65 @@ -def t_strings(): +from string import Formatter + +def template_strings(): my_template = "This is a value: {test}" print(my_template.format(test="another")) + complext_template = "The number of days in a %s is %d" + # % is the string formatting operator + print(complext_template % ("year", 365)) + + print("Numbers can also be formatted, such as %.2f" % 123.1235) + + print("Simple template values can also be indexed {0} {1} but CANT use the formatting operator '%'".format("first", "second")) + + print("What can do is specify both a template value name and a format, such as {test:.2f}".format(test=123.12345)) + + name = "Me" + surname = "Another dude" + print(f"I'm {name} {surname}") + + # Lower level access to format flows + test_template = "This is an example with {with_quotes!r} or a number {num:.2f}" + for text, field, format_spec, conversion in Formatter().parse(test_template): + print(f"{text=}, {field=}, {format_spec=}, {conversion=}") + + # Allow input in templates + # print(t"Hello, {input("Enter your name: ")} 👋 Welcome back!") + + +def split_strings(): + example_string = "This is a long string with a number 2134" + print(f"> Example string: {example_string}") + + first_four = example_string[:4] + print(f"> First four: {first_four}") + + last_four = example_string[-4:] + print(f"> Last four: {last_four}") + + without_first_four = example_string[4:] + print(f"> Without first four: {without_first_four}") + + without_last_four = example_string[:-4] + print(f"> Without last four: {without_last_four}") + + with_replaced_l = example_string.replace("l", "p") + print(f"> With replaced l: {with_replaced_l}") + + # Must use ascii chars + with_multiple_removed = example_string.translate({97: None, 101: None, 105: None, 111: None, 117: None}) + print(f"> Without vocals: {with_multiple_removed}") + + a_to_o = str.maketrans("a", "o") + with_o_instead_of_a = example_string.translate(a_to_o) + print(f"> With o instead of a: {with_o_instead_of_a}") + + no_a = str.maketrans("", "", "a") + without_a = example_string.translate(no_a) + print(f"> Without a: {without_a}") + + def run(): - t_strings() + template_strings() + split_strings()