I’m using the python package inflect
to convert numbers to words. I would like to know how I can have inflect
convert the numbers the right way without unnecessary “and” in the end result.
Here’s my code
from datetime import date import inflect, sys def main(): print(time_check(input("What's your DOB?: "))) def time_check(check): p = inflect.engine() year, month, day = check.split("-") year, month, day = int(year), int(month), int(day) dob = date(year, month, day) diff = date.today() - dob # Convert days to minutes & then use inflect to convert the number to words ans = p.number_to_words(diff.days*24*60) return f"{ans.capitalize()} minutes" if __name__ == "__main__": main()
When I input "2021-10-10"
as my Date of Birth(DOB), ans
will become
ans = p.number_to_words(525,600)
This will then print “Five hundred and twenty five-thousand, six hundred minutes” but I don’t want that as that is partially incorrect. I want my code to print “Five hundred twenty five-thousand, six hundred minutes” without the “and”.
I know I can use the replace
method to replace the “and” with an empty string, but I don’t want to do that. I want the inflect
python package to convert numbers to words using this right way.
I hope you guys can understand the problem here & hope to get your help.
Advertisement
Answer
Just set andword
in number_to_words()
as it is ‘and’ by default. See the inflect documentation for more details.
p.number_to_words(diff.days*24*60, andword = '')
This will print the following directly (for 2021-10-10):
Five hundred twenty-five thousand, six hundred minutes