python: AttributeError: 'str' object has no attribute 'get'

DevFeng 发表于 2021/12/18 22:41:44 2021/12/18
【摘要】 问题读取properter自定义的文件后,解析dict报错:AttributeError: 'str' object has no attribute 'get'。读取文件的方法class Properties(object): def __init__(self, fileName): self.fileName = fileName self.properties = {}...

问题

读取properter自定义的文件后,解析dict报错:AttributeError: 'str' object has no attribute 'get'。

读取文件的方法

class Properties(object):
  def __init__(self, fileName):
    self.fileName = fileName
    self.properties = {}
  def __getDict(self,strName,dictName,value):
    if(strName.find('.')>0):
      k = strName.split('.')[0]
      dictName.setdefault(k,{})
      return self.__getDict(strName[len(k)+1:],dictName[k],value)
    else:
      dictName[strName] = value
      return
  def getProperties(self):
    try:
      pro_file = open(self.fileName, 'Ur')
      for line in pro_file.readlines():
        line = line.strip().replace('\n', '')
        if line.find("#")!=-1:
          line=line[0:line.find('#')]
        if line.find('=') > 0:
          strs = line.split('=')
          strs[1]= line[len(strs[0])+1:]
          self.__getDict(strs[0].strip(),self.properties,strs[1].strip())
    except Exception as e:
      raise e
    else:
      pro_file.close()
    return self.properties

读取文件的内容

mp_one={"m_x":859,"m_y":331,"z_x":715,"z_y":119}

解析

dictProperties = Properties("config").getProperties()
print(dictProperties.get("mp_one"))
print(dictProperties.get("mp_one").get("m_x"))

错误提示

处理使用eval函数

dict_str = '{"name":"张三","age":"39"}'
list_str = '[{"name":"张三","age":"39"},{"name":"李四","age":"29"}]'
dict_obj = eval(dict_str)
list_obj = eval(list_str)
print(type(dict_obj))
print(type(list_obj))
输出结果
<class 'dict'>
<class 'list'>

描述

eval() 函数用来执行一个字符串表达式,并返回表达式的值。

语法

以下是 eval() 方法的语法:

eval(expression[, globals[, locals]])

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。