Is there a way to detect words without searching for whitespace or underscores

I am trying to write a CLI for generating python classes. Part of this requires validating the identifiers provided in user input, and for python this requires making sure that identifiers conform to the pep8 best practices/standards for identifiers- classes with CapsCases, fields with all_lowercase_with_underscores, packages and modules with so on so fourth-

# it is easy to correct when there is a identifier
# with underscores or whitespace and correcting for a class

def package_correct_convention(item):
    return item.strip().lower().replace(" ","").replace("_","")

But when there is no whitespaces or underscores between tokens, I'm not sure how to how to correctly capitalize the first letter of each word in an identifier. Is it possible to implement something like that without using AI or something like that:

say for example:

# providing "ClassA" returns "classa" because there is no delimiter between "class" and "a"
def class_correct_convention(item):
    if item.count(" ") or item.count("_"):
        # checking whether space or underscore was used as word delimiter.
        if item.count(" ") > item.count("_"):
            item = item.split(" ")
        elif item.count(" ") < item.count("_"):
            item = item.split("_")
        item = list(map(lambda x: x.title(), item))
        return ("".join(item)).replace("_", "").replace(" ","")
    # if there is no white space, best we can do it capitalize first letter 
    return item[0].upper() + item[1:]


Read more here: https://stackoverflow.com/questions/65711497/is-there-a-way-to-detect-words-without-searching-for-whitespace-or-underscores

Content Attribution

This content was originally published by breadman0 at Recent Questions - Stack Overflow, and is syndicated here via their RSS feed. You can read the original post over there.

%d bloggers like this: