Converting from a string to boolean in Python
Convert a string to a boolean in Python with str.lower() == 'true', which returns True if the string is 'true' (case-insensitive) and False for any other input.
Example:
This one-liner does a quick boolean conversion by checking if the string, when converted to lowercase, equals 'true'.
Dealing with other "True" Strings
Need to check against multiple true equivalents? Use a set {} containing all possible 'true' strings.
Handy when dealing with unpredictable user inputs or various configuration values.
Making Use of Explicit Checks
Despite its innocent look, bool("False") == True can be a deceitful liar. This paradox occurs because any non-empty string in Python is truthy. Here's how to avoid pitfalls:
Explicit validation like this makes your code more understandable, preventing any nasty surprises with boolean strings.
Say No to strtobool
Using strtobool from distutils.util may seem tempting, but it will ride into the sunset in Python 3.12:
Knowing this deprecation will prepare you to find better alternatives early.
Serializer for the Win
json.loads() can work magic to convert 'true' and 'false' into their boolean equivalents:
Keep in mind it only works with lowercase strings 'true' and 'false', adhering to JSON's boolean representation.
Secure Conversion with ast.literal_eval
ast.literal_eval offers a secure way to convert literal "True"/"False" into boolean:
This method is much safer compared to eval(), especially when used with untrusted literals.
Creating a Custom Function
Crafting Your Own str2bool Function
A custom function is an ambulance for those in need of converting more ambiguous true and false representations:
This custom, robust solution handles various representations of true and false, providing a clear return value.
Safeguarding Against a Diverse Set of String Inputs
It's essential to test your str2bool function with diverse strings to ensure it's working like a charm:
Future-proof Your Conversions
Preparing for Deprecated Functions
With strtobool packing its bags, it's never too early to write future-proof conversions.
Handle Untrusted Data with Care
For untrusted or complex strings, json.loads and ast.literal_eval, along with thorough validation, can ensure data security.
Embrace Inclusivity in Boolean Checks
Consider linguistic and cultural inclusiveness by including language variants in your true/false sets, improving your function's versatility.
Was this article helpful?