字典对象没有属性 split

Dictionary object has no attribute split

我的数据文件如下所示:

{'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'}

我正在尝试打印这一行:

35.6547,56475

这是我的代码:

data = "above mentioned data"
for s in data.values():
    print(s)
while data != "stop":
        if data == "quit":
            os.system("disconnect")
        else:
            x, y = s.split(',', 1)

输出为:

{'data': 'xyz', 'code': '<:c:605445>  **[Code](https://traindata/35.6547,56475', 'time': '2021-12-30T09:56:53.547', 'value': 'True', 'stats': '95/23', 'dupe_id': 'S<:c-74.18'}
x, y = s.split(',', 1)
AttributeError: 'dict' object has no attribute 'split'

我试过将它转换成元组列表,但我遇到了同样的错误。 x,y 中的输入应该是上面提到的预期输出 (35.6547,56475)。 任何帮助将不胜感激。

你可以这样做:

x,y = d['code'].split('/')[-1].split(',')

这意味着,您需要通过其中一个键来访问字典,在这里您要访问 'code'。您检索字符串 '<:c:605445> **[Code](https://traindata/35.6547,56475',您现在可以通过正则表达式对其进行解析,或者您只需在 '/' 和使用 [-1] 取它的最后一个元素。然后你可以拆分剩余的数字,你实际上正在寻找并将它们分别写入 x 和 y。

当然,您可能希望通过捕获您在评论中提到的 KeyError 来检查传入数据是否有效:

try:
  x,y = d['code'].split('/')[-1].split(',')
except KeyError:
  print(f'Data invalid. Key "code" not found. Got: {data} instead')

只能拆分文本,不能拆分字典类型
首先获取要拆分的文本

d['code']

另一种选择是在代码元素上使用简单的正则表达式 - 从字符串末尾开始的正则表达式,找到 a 的所有数字。找到 a 的所有数字,找到所有数字。

import re

d = {'data': 'xyz', 'code': ':c:  **[Code](https://traindata/35.6547,56475', 'time': '2021-12-30T09:56:53.547', 'value': 'True', 'stats': '96/23', 'dupe_id': 'S<:c-74.18'}

print(re.findall(r'\d+.\d+,\d+$', d['code'])[0])