繁体   English   中英

我正在尝试将具有一些空属性的xml文件导入表。 收到此错误AttributeError:'NoneType'对象没有属性'strip'

[英]I am trying to import xml file with some empty attributes to table. getting this error AttributeError: 'NoneType' object has no attribute 'strip'

def XML_get_fields_and_types_and_data_levels_3(xml_file_name):
    data_2d = []
    for child in root:
        grandchildren = child.findall(".//")
        fields = []
        types = []
        data_1d = []
        data_2d.append(data_1d)
        for grandchild in grandchildren:
            data_1d.append(convert_string_to_type(grandchild.text))
        if grandchild.tag not in fields:
            fields.append(grandchild.tag)
            types.append(get_type_of_string(grandchild.text))
    return (fields, types, data_2d)

def get_type_of_string(string):
    clean_string = string.strip()
    try:
        if  clean_string is not None:
            clean_string = string.strip()
            return string.strip()
        if "." in clean_string:
            clean_string = string.split()
            if isinstance(clean_string, list):
                point_or_segment = [float(i) for i in clean_string]
                if len(point_or_segment) == 2:
                    return 'POINT'
                else:
                    return 'LSEG'
            else:
                val = float(clean_string)
                return 'REAL'
        else:
            val = int(clean_string)
            return 'INTEGER'
    except ValueError:
        return 'TEXT'

问题是方法定义后的代码行(loc),

def get_type_of_string(string): clean_string = string.strip()

那里的string可能是None ,所以引发了异常。 建议您重新设计此方法,而不是为您重新编写该方法(这对我来说很方便,但对您没有太大帮助)。 这是我的提示:

  • 有重复的代码
  • split()方法总是返回一个列表,无论是否找到分隔符, if isinstance(clean_string, list)都不需要存在此行
  • 那么如果此后不使用val为什么要进行这种转换呢? 最简单的评估变量类型的方法是使用isinstance()内置方法,就像您在上面几行所做的那样。
  • 尝试将此方法拆分为更简单和较小的方法,或者尝试简化其逻辑。

希望这些提示可以帮助您。 享受编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM