Package: d8s-strings
Democritus StringsDemocritus functions[1]for working with Python strings.[1] Democritus functions aresimple, effective, modular, well-tested, and well-documentedPython functions.We used8s(pronounced "dee-eights") as an abbreviation fordemocritus(you can read more about thishere).Installationpip install d8s-stringsUsageYou import the library like:fromd8s_stringsimport*Once imported, you can use any of the functions listed below.Functionsdefstring_chars_at_start(string:str,chars:Iterable)->Iterable[str]:"""."""defstring_chars_at_start_len(string:str,chars:Iterable)->int:"""."""defa10n(string:str)->str:"""."""defstring_remove_index(string:str,index:int)->str:"""Remove the item from the string at the given index."""defstring_replace_index(string:str,index:int,replacement:str)->str:"""Replace the character in the string at the given index with the replacement."""defstring_remove_before(string:str,stop_string:str):"""Remove everything from the start of the given string until the stop_string."""defstring_remove_after(string:str,start_string:str):"""Remove everything after the start_string to the end of the given string."""defstring_is_palindrome(string:str)->bool:"""Return whether or not the given string is a palindrome."""defstring_reverse(string:str)->str:"""Reverse the given string."""defindefinite_article(word):"""Return the word with the appropriate indefinite article."""defis_plural(possible_plural:str)->bool:"""Return whether or not the possible_plural is plural."""defpluralize(word:str)->str:"""Make the word plural."""defis_singular(possible_singular:str)->bool:"""Return whether or not the possible_singular is singular."""defsingularize(word:str)->str:"""Make the word singular."""defcardinalize(word:str,count:int)->str:"""Return the appropriate form of the given word for the count."""defordinalize(number:int)->str:"""Return the appropriate form for the ordinal form of the given number."""defstring_forms(text):"""Return multiple forms for the given text."""defstring_left_pad(string,length:int,*,padding_characters=' '):"""Pad the given string with the given padding_characters such that the length of the resulting string is equal to the `length` argument. Adapted from the javascript code here: https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/."""defstring_to_bool(string:str)->bool:"""."""deftext_examples(n=10):"""Create n example texts."""defstring_has_multiple_consecutive_spaces(string):"""Return True if the given string has multiple, consecutive spaces."""defcharacter_examples(n=10):"""Create n example characters."""deftext_abbreviate(text):"""Abbreviate the given text."""deftext_input_is_yes(message):"""Get yes/no input from the user and return `True` if the input is yes and `False` if the input is no."""deftext_input_is_no(message):"""Get yes/no input from the user and return `True` if the input is no and `False` if the input is yes."""defstring_is_yes(string):"""Check if a string is some form of `y` or `yes`."""defstring_is_no(string):"""Check if a string is some form of `n` or `no`."""defxor(message,key):"""."""deftext_join(join_character,*args):"""Join all of the arguments around the given join_character."""defstring_insert(existing_string,new_string,index):"""Insert the new_string into the existing_string at the given index."""defbase64_encode(input_string):"""Base64 encode the string."""defbase64_decode(input_string):"""Base64 decode the string."""defstring_sequence_matcher(string_a,string_b):"""Create a difflib.SequenceMatcher for the given string."""defstrings_diff(string_a,string_b):"""Return the diff of the two strings."""defstring_add_to_start_of_each_line(string:str,string_to_add_to_each_line:str):"""Add the given string_to_add_to_each_line to the beginning of each line in the string."""defstring_get_closes_matches(word,possible_matches,maximum_matches=3,cutoff=0.6):"""Return the words from the list of possible matches that are closest to the given word."""defstrings_similarity(a:str,b:str):"""Return the ratio of similarity between the two strings."""defstrings_matching_blocks(a:str,b:str):"""Return the matching blocks in the given strings."""defstrings_longest_matching_block(a:str,b:str):"""Return the longest matching block in the string."""defstrings_diff_opcodes(a:str,b:str):"""Return the opcodes representing the differences/similarities between two strings."""defstring_common_prefix(a:str,b:str)->str:"""Returns the common prefix string from left to right between a and b."""defstring_common_suffix(a:str,b:str):"""Returns the common suffix string from left to right between a and b."""defcharacters(input_string):"""Return all of the characters in the given string."""defhex_to_string(hex_string):"""Convert the given hex string to ascii."""defstring_to_hex(ascii_string:str,seperator='')->str:"""Convert the given ascii string to hex."""defcharacter_to_unicode_number(character):"""Convert the given character to its Unicode number. This is the same as the `ord` function in python."""defunicode_number_to_character(unicode_number):"""Convert the given unicode_number to it's unicode character form. This is the same as the `chr` function in python."""defhamming_distance(string_1,string_2,as_percent=False):"""Return the number of positions at which corresponding symbols in string_1 and string_2 are different (this is known as the Hamming Distance). See https://en.wikipedia.org/wiki/Hamming_distance."""deffrom_char_code(integer_list):"""."""deftext_ascii_characters(text:str)->Tuple[str]:"""."""deftext_non_ascii_characters(text:str)->Tuple[str]:"""."""defletter_as_number(letter):"""."""defletter_frequency(letter,text):"""Find the frequency of the given letter in the given text."""defstring_entropy(text,ignore_case=False):"""Find the shannon entropy of the text. Inspired by the algorithm here https://web.archive.org/web/20160320142455/https://deadhacker.com/2007/05/13/finding-entropy-in-binary-files/. You can see more here: https://en.wikipedia.org/wiki/Entropy_(information_theory)"""defsubstrings(iterable):"""Find all substrings in the given string."""defstring_remove_non_alphabetic_characters(string:str):"""."""defstring_remove_non_numeric_characters(string:str):"""."""defstring_remove_non_alpha_numeric_characters(string:str):"""."""defstring_remove(regex_pattern,input_string,**kwargs):"""Remove the regex_pattern from the input_string."""defstring_remove_unicode(string:str):"""Remove all Unicode characters from the given string."""defstring_remove_numbers(input_string:str,replacement:str=' '):"""Remove all numbers from the input_strings."""defstring_remove_from_start(input_string,string_to_remove):"""Remove the string_to_remove from the start of the input_string."""defstring_remove_from_end(input_string,string_to_remove):"""Remove the string_to_remove from the end of the input_string."""defstring_as_numbers(input_string:str):"""."""defstring_in_iterable_fuzzy(input_string,iterable):"""Find if the given input_string is in one of the strings in an iterable."""defstring_find_between(input_string:str,start_string:str,end_string:str,*args):"""Find the string in the input_string that is between the start_string and the end_string."""defswitch(a,b,text):"""Switch a and b in the text."""defstring_encode_as_bytes(input_string,encoding='utf-8',**kwargs):"""."""defbytes_decode_as_string(bytes_text,encoding='utf-8',**kwargs):"""."""defstring_shorten(input_string,length,suffix='...'):"""Shorten the given input_string to the given length."""defstring_split_without_empty(input_string,split_char):"""Split a input_string on split_char and remove empty entries."""defstring_has_index(string:str,index:Union[str,int])->bool:"""."""defstring_split_on_uppercase(input_string:str,include_uppercase_characters=False,split_acronyms=True):"""Split the input_string on uppercase characters. If split_acronyms is False, the function will not split consecutive uppercase letters."""defstring_split_on_lowercase(input_string,include_lowercase_characters=False):"""Split the string on lowercase characters."""defstring_split_multiple(string,*splitting_characters):"""Split a string up based on multiple splitting_characters."""defstring_reverse_case(input_string):"""Make lowercase characters uppercased and visa-versa."""deftext_vowels(text):"""Return all of the vowels in the text."""deftext_vowel_count(text):"""Count the number of vowels in the text."""deftext_consonants(text):"""Return all of the consonants in the text."""deftext_consonant_count(text):"""Count the number of consonants in the text."""deftext_input(message='Enter/Paste your content.'):"""."""deftext_ensure_starts_with(text:str,prefix:str):"""Make sure the given text starts with the given prefix."""deftext_ensure_ends_with(text:str,suffix:str):"""Make sure the given text ends with the given suffix."""deftitlecase(item):"""."""defuppercase(item):"""."""defuppercase_first_letter(text):"""Make the first letter of the text uppercase."""deflowercase_first_letter(text):"""Make the first letter of the text lowercase."""defcrazycase(text):"""Make the case of the characters in the given text pseudo-random"""defkebab_case(text):"""Return the text with a "-" in place of every space."""defsnake_case(text):"""Return the text with a "_" in place of every space."""defcamel_case(text:str):"""Return the text with no spaces and every word (except the first one) capitalized."""defpascal_case(text:str):"""Return the text with no spaces and every word capitalized."""defsentence_case(text:str):"""."""defuppercase_count(text):"""Count the number of uppercase letters in the given text."""deflowercase_count(text):"""Count the number of lowercase letters in the given text."""deflowercase(item):"""."""defstring_rotate(text,rot=13):"""Return the text converted using a Caesar cipher (https://en.wikipedia.org/wiki/Caesar_cipher) in which the text is rotated by the given amount (using the `rot` argument)."""deftext_is_english_sentence(text:str)->bool:"""Determine whether or not the sentence is likely English."""defleet_speak_to_text(leet_speak_text):"""."""deftext_to_leet_speak(text):"""."""defunicode_to_ascii(text:str):"""Convert the text to ascii."""Development👋  If you want to get involved in this project, we have some short, helpful guides below:contribute to this project 🥇test it 🧪lint it 🧹explore it 🔭If you have any questions or there is anything we did not cover, please raise an issue and we'll be happy to help.CreditsThis package was created withCookiecutterand Floyd Hightower'sPython project template.