Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Closed
Description
ElementTree's "findtext" function returns an empty string value if the element's text field contains an integer with value 0. Below example illustrates the issue:
importxml.etree.ElementTreeasET# Create root elementtest=ET.Element("test")# Compute sum and difference on two numbersfirstNumber=5000secondNumber=5000sum=firstNumber+secondNumberdifference=firstNumber-secondNumber# Create subelements for sum and difference valuesel=ET.SubElement(test,"sum")el.text=sumel=ET.SubElement(test,"diff")el.text=difference# Print data typesprint("type(sum): "+str(type(sum)))print("type(diff): "+str(type(difference)))print("type(sum subelt): "+str(type(test.findtext('./sum'))))print("type(diff subelt): "+str(type(test.findtext('./diff'))))# Print values of sub elementsprint("sum subelt: "+str(test.findtext('./sum')))print("diff subelt: "+str(test.findtext('./diff')))
This gives me the following output:
type(sum): <class 'int'>type(diff): <class 'int'>type(sum subelt): <class 'int'>type(diff subelt): <class 'str'>sum subelt: 10000diff subelt:Note how the data type of the "diff" sub-element is "string", even though the source data is an integer.
I'm using Python 3.8.10 on Linux Mint 20.1 Ulyssa (based on Ubuntu Focal Fossa 20.04).