求助:解决AttributeError: 'dict' object has no attribute 'split'错误并提取目标坐标值
解决提取坐标并赋值变量的AttributeError问题
问题背景
我需要从以下字典数据中提取35.6547,56475,并将两个数值分别赋值给变量x和y:
data = { 'data': 'xyz', 'code': '<:c:605445> **[Code](https://traindata/35.6547,56475', 'time': '2021-12-30T09:56:53.547', 'value': 'True', 'stats': '96/23', 'dupe_id': 'S<:c-74.18' }
但运行自己写的代码时,遇到了错误:
AttributeError: 'dict' object has no attribute 'split'
尝试将对象转换为元组、列表后,仍然出现相同错误。
错误原因分析
你的代码存在几个关键逻辑问题:
- 首先,
data应该被定义为字典对象,但你写了data = "above mentioned data",这直接导致后续操作逻辑混乱; - 循环
for s in data.values()后,s会遍历字典里的所有值(比如'xyz'、时间字符串等),最后执行x, y = s.split(',', 1)时,s可能并非你需要的code字段字符串,甚至代码逻辑混乱后s指向了字典本身,自然触发split方法不存在的错误; while循环的条件和逻辑和提取坐标的需求完全不相关,进一步干扰了变量的正确使用。
解决方案
我们可以直接定位到code字段,从中精准提取目标坐标,再分割赋值:
import os # 正确定义字典数据 data = { 'data': 'xyz', 'code': '<:c:605445> **[Code](https://traindata/35.6547,56475', 'time': '2021-12-30T09:56:53.547', 'value': 'True', 'stats': '96/23', 'dupe_id': 'S<:c-74.18' } # 提取code字段的内容 code_str = data['code'] # 从URL中截取坐标部分:找到最后一个'/'后的内容 coords = code_str.split('/')[-1] # 分割坐标为x和y x, y = coords.split(',', 1) # 输出结果验证 print(f"x: {x}, y: {y}") # 如果需要保留quit/stop的断开逻辑,调整为如下形式: while True: user_input = input("输入命令(quit/stop):") if user_input == "quit": os.system("disconnect") break elif user_input == "stop": break
代码说明
- 首先正确定义字典
data,直接通过键名data['code']获取目标字符串,避免遍历所有值的混乱; - 使用
split('/')[-1]截取URL最后一个斜杠后的坐标部分,精准得到35.6547,56475; - 用
split(',', 1)将坐标字符串分割为两个部分,分别赋值给x和y; - 调整了
while循环的逻辑,让它和坐标提取的逻辑不冲突,同时实现你需要的断开连接功能。
内容的提问来源于stack exchange,提问作者Sukrut Shishupal
相关产品推荐
相关产品推荐

