Python 我正在尝试将带有一些空属性的xml文件导入到表中。获取此错误属性错误:';非类型';对象没有属性';条状';
问题是方法定义后的代码行(loc)Python 我正在尝试将带有一些空属性的xml文件导入到表中。获取此错误属性错误:';非类型';对象没有属性';条状';,python,xml,postgresql,Python,Xml,Postgresql,问题是方法定义后的代码行(loc) def get_type_of_string(字符串): clean_string=string.strip() 有字符串可能是无,因此引发异常。我建议你重新设计这个方法,而不是为你重新编写这个方法,这对我来说很容易,但对你没有多大帮助。以下是我的提示: 有重复的代码 split() 那么,如果此后未使用thenval,为什么要进行此转换?计算变量类型的最简单方法是使用isinstance()builtin方法,就像上面几行那样 尝试将此方法拆分为更简单和更
def get_type_of_string(字符串):
clean_string=string.strip()
有字符串
可能是无
,因此引发异常。我建议你重新设计这个方法,而不是为你重新编写这个方法,这对我来说很容易,但对你没有多大帮助。以下是我的提示:
- 有重复的代码
split()
- 那么,如果此后未使用then
,为什么要进行此转换?计算变量类型的最简单方法是使用val
builtin方法,就像上面几行那样isinstance()
- 尝试将此方法拆分为更简单和更小的方法,或者尝试简化其逻辑
希望这些提示能帮助你度过难关。喜欢编码。您用什么来调用这些函数?参数中包含的内容对您遇到的错误非常重要:)实际上,我想将一个输入转换为点,这就是为什么我写下这个函数。但是在这里,当我尝试剥离空属性时,它会给出错误,如何处理它?第一次出现
string.strip()
不受保护,如果字符串不是None:
@Sairaclean\u string=string.strip()
导致错误,您在错误处理之前调用该错误。该行只能在try
块内调用。您的代码也可以做一些小的改进,但假设其他一切都很好,上述方法应该可以解决您的问题(即删除当前的get\u type\u of_string
函数的第一行)。
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'