簡體   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