Skip to content

findtext returns empty string on integer zero value #91447

@bitsgalore

Description

@bitsgalore

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:

import xml.etree.ElementTree as ET # Create root element test = ET.Element("test") # Compute sum and difference on two numbers firstNumber = 5000 secondNumber = 5000 sum = firstNumber + secondNumber difference = firstNumber - secondNumber # Create subelements for sum and difference values el = ET.SubElement(test, "sum") el.text = sum el = ET.SubElement(test, "diff") el.text = difference # Print data types print("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 elements print("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: 10000 diff 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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    topic-XMLtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions