字典对象没有属性 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])
我的数据文件如下所示:
{'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])