Package: python-string-utils
Python String UtilsLatest version:1.0.0(March 2020)A handy library to validate, manipulate and generate strings, which is:Simple and "pythonic"Fully documented and with examples! (html version onreadthedocs.io)100% code coverage! (see it with your own eyes oncodecov.io)Tested (automatically on each push thanks to Travis CI) against all officially supported Python versionsFast (mostly based on compiled regex)Free from external dependenciesPEP8 compliantWhat's inside...Library structureThe library basically consists in the python packagestring_utils, containing the following modules:validation.py(contains string check api)manipulation.py(contains string transformation api)generation.py(contains string generation api)errors.py(contains library-specific errors)_regex.py(contains compiled regexFOR INTERNAL USAGE ONLY)Plus a secondary packagetestswhich includes several submodules.Specifically one for each test suite and named according to the api to test (eg. tests foris_ip()will be intest_is_ip.pyand so on).All the public API are importable directly from the main packagestring_utils, so this:from string_utils.validation import is_ipcan be simplified as:from string_utils import is_ipApi overviewBear in mind: this is just an overview,
for the full API documentation see:readthedocs.ioString validation functions:is_string: checks if the given object is a stringis_string('hello') # returns true
is_string(b'hello') # returns falseis_full_string: checks if the given object is non empty stringis_full_string(None) # returns false
is_full_string('') # returns false
is_full_string(' ') # returns false
is_full_string('foo') # returns trueis_number: checks if the given string represents a valid numberis_number('42') # returns true
is_number('-25.99') # returns true
is_number('1e3') # returns true
is_number(' 1 2 3 ') # returns falseis_integer: checks if the given string represents a valid integeris_integer('42') # returns true
is_integer('42.0') # returns falseis_decimal: checks if the given string represents a valid decimal numberis_decimal('42.0') # returns true
is_decimal('42') # returns falseis_url: checks if the given string is an urlis_url('foo.com') # returns false
is_url('http://www.foo.com') # returns true
is_url('https://foo.com') # returns trueis_email: Checks if the given string is an emailis_email('my.email@some.provider.com') # returns true
is_eamil('@gmail.com') # retruns falseis_credit_card: Checks if the given string is a credit cardis_credit_card(value)

# returns true if `value` represents a valid card number for one of these:
# VISA, MASTERCARD, AMERICAN EXPRESS, DINERS CLUB, DISCOVER or JCBis_camel_case: Checks if the given string is formatted as camel caseis_camel_case('MyCamelCase') # returns true
is_camel_case('hello') # returns falseis_snake_case: Checks if the given string is formatted as snake caseis_snake_case('snake_bites') # returns true
is_snake_case('nope') # returns falseis_json: Checks if the given string is a valid jsonis_json('{"first_name": "Peter", "last_name": "Parker"}') # returns true
is_json('[1, 2, 3]') # returns true
is_json('{nope}') # returns falseis_uuid: Checks if the given string is a valid UUIDis_uuid('ce2cd4ee-83de-46f6-a054-5ee4ddae1582') # returns trueis_ip_v4: Checks if the given string is a valid ip v4 addressis_ip_v4('255.200.100.75') # returns true
is_ip_v4('255.200.100.999') # returns false (999 is out of range)is_ip_v6: Checks if the given string is a valid ip v6 addressis_ip_v6('2001:db8:85a3:0000:0000:8a2e:370:7334') # returns true
is_ip_v6('123:db8:85a3:0000:0000:8a2e:370,1') # returns falseis_ip: Checks if the given string is a valid ip (any version)is_ip('255.200.100.75') # returns true
is_ip('2001:db8:85a3:0000:0000:8a2e:370:7334') # returns true
is_ip('255.200.100.999') # returns false
is_ip('123:db8:85a3:0000:0000:8a2e:370,1') # returns falseis_isnb_13: Checks if the given string is a valid ISBN 13is_isbn_13('9780312498580') # returns true
is_isbn_13('978-0312498580') # returns true
is_isbn_13('978-0312498580', normalize=False) # returns falseis_isbn_10: Checks if the given string is a valid ISBN 10is_isbn_10('1506715214') # returns true
is_isbn_10('150-6715214') # returns true
is_isbn_10('150-6715214', normalize=False) # returns falseis_isbn: Checks if the given string is a valid ISBN (any version)is_isbn('9780312498580') # returns true
is_isbn('1506715214') # returns trueis_slug: Checks if the string is a slug (as created byslugify())is_slug('my-blog-post-title') # returns true
is_slug('My blog post title') # returns falsecontains_html: Checks if the strings contains one ore more HTML/XML tagcontains_html('my string is <strong>bold</strong>') # returns true
contains_html('my string is not bold') # returns falsewords_count: Returns the number of words contained in the stringwords_count('hello world') # returns 2
words_count('one,two,three') # returns 3 (no need for spaces, punctuation is recognized!)is_palindrome: Checks if the string is a palindromeis_palindrome('LOL') # returns true
is_palindrome('ROTFL') # returns falseis_pangram: Checks if the string is a pangramis_pangram('The quick brown fox jumps over the lazy dog') # returns true
is_pangram('hello world') # returns falseis_isogram: Checks if the string is an isogramis_isogram('dermatoglyphics') # returns true
is_isogram('hello') # returns falseString manipulation:camel_case_to_snake:  Converts a camel case formatted string into a snake case onecamel_case_to_snake('ThisIsACamelStringTest') # returns 'this_is_a_camel_case_string_test'snake_case_to_camel: Converts a snake case formatted string into a camel case onesnake_case_to_camel('the_snake_is_green') # returns 'TheSnakeIsGreen'reverse: Returns the string in a reversed orderreverse('hello') # returns 'olleh'shuffle: Returns the string with its original chars but at randomized positionsshuffle('hello world') # possible output: 'l wodheorll'strip_html: Removes all the HTML/XML tags found in a stringstrip_html('test: <a href="foo/bar">click here</a>') # returns 'test: '
strip_html('test: <a href="foo/bar">click here</a>', keep_tag_content=True) # returns 'test: click here'prettify: Reformat a string by applying basic grammar and formatting rulesprettify(' unprettified string ,, like this one,will be"prettified" .it\' s awesome! ')
# the ouput will be: 'Unprettified string, like this one, will be "prettified". It\'s awesome!'asciify: Converts all non-ascii chars contained in a string into the closest possible ascii representationasciify('èéùúòóäåëýñÅÀÁÇÌÍÑÓË') 
# returns 'eeuuooaaeynAAACIINOE' (string is deliberately dumb in order to show char conversion)slugify: Convert a string into a formatted "slug"slugify('Top 10 Reasons To Love Dogs!!!') # returns: 'top-10-reasons-to-love-dogs'booleanize: Convert a string into a boolean based on its contentbooleanize('true') # returns true
booleanize('YES') # returns true
booleanize('y') # returns true
booleanize('1') # returns true
booelanize('something else') # returns falsestrip_margin: Removes left indentation from multi-line strings (inspired by Scala)strip_margin('''
        line 1
        line 2
        line 3
''')

#returns:
'''
line 1
line 2
line 3
'''compress/decompress: Compress strings into shorted ones that can be restored back to the original one later oncompressed = compress(my_long_string) # shorter string (URL safe base64 encoded)

decompressed = decompress(compressed) # string restored

assert(my_long_string == decompressed) # yeproman_encode: Encode integers/string into roman numbersroman_encode(37) # returns 'XXXVII'roman_decode: Decode roman number into an integerroman_decode('XXXVII') # returns 37roman_range: Generator which returns roman numbers on each iterationfor n in roman_range(10): print(n) # prints: I, II, III, IV, V, VI, VII, VIII, IX, X
for n in roman_range(start=7, stop=1, step=-1): print(n) # prints: VII, VI, V, IV, III, II, IString generations:uuid: Returns the string representation of a newly created UUID objectuuid() # possible output: 'ce2cd4ee-83de-46f6-a054-5ee4ddae1582'
uuid(as_hex=True) # possible output: 'ce2cd4ee83de46f6a0545ee4ddae1582'random_string: Creates a string of the specified size with random charsrandom_string(9) # possible output: 'K1URtlTu5'secure_random_hex: Creates an hexadecimal string using a secure strong random generatorsecure_random_hex(12) 
# possible ouput: 'd1eedff4033a2e9867c37ded' 
# (len is 24, because 12 represents the number of random bytes generated, which are then converted to hexadecimal value)Installationpip install python-string-utilsChecking installed versionimport string_utils
string_utils.__version__
'1.0.0' # (if '1.0.0' is the installed version)DocumentationFull API documentation available onreadthedocs.ioSupport the project!Do you like this project? Would you like to see it updated more often with new features and improvements?
If so, you can make a small donation by clicking the button down below, it would be really appreciated! :)