python - 使用 Python 将字符串转换为字典列表
问题描述
我的代码如下:
try:
relations = open(file_name, "wb")
ftp.retrbinary('RETR {0}'.format(file_name), test)
relations.close() # Closes the local file
ftp.quit() # Closes the ftp connection
print("FTP Connection quited.")
except Exception as e:
print("Error: File {0} could not be downloaded. {1}".format(file_name, str(e)))
并且测试函数如下:
def test(data):
data_n = json.dumps(data.decode('utf-8'))
pdb.set_trace()
pass
我想使用 python 从 ftp 服务器下载文件并在不本地写入的情况下读取它。
在这种情况下test
,data_n
我得到:
'"CODE;MATCHCODE;\\r\\nK902154;VANHOVEGARAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\\r\\nK902191;CARAVENUESTAR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\\r\\nK902192;CARAVENUESTAR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"'
如何将其转换为字典列表,如下所示:
result = [
{
"CODE": "K902154",
"MATCHCODE": "VANHOVEGARAGES"
},
{
"CODE": "K902191",
"MATCHCODE": "CARAVENUESTAR"
},
{
"CODE": "K902192",
"MATCHCODE": "CARAVENUESTAR"
}
]
解决方案
使用str.split
和一个简单的迭代。
前任:
s = '"CODE;MATCHCODE;\\r\\nK902154;VANHOVEGARAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\\r\\nK902191;CARAVENUESTAR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\\r\\nK902192;CARAVENUESTAR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"'
result = []
for i, v in enumerate(s.split(r"\r\n")):
if i == 0:
keys = v.strip().strip(';"').split(";") #Get Keys
else:
result.append(dict(zip(keys, v.strip().strip(';"').split(";")))) #Form dict.
print(result)
输出:
[{'CODE': 'K902154', 'MATCHCODE': 'VANHOVEGARAGES'},
{'CODE': 'K902191', 'MATCHCODE': 'CARAVENUESTAR'},
{'CODE': 'K902192', 'MATCHCODE': 'CARAVENUESTAR'}]
推荐阅读
- c# - 如何去除 ASP.NET CORE 中多层的循环依赖
- c# - REST api 版本控制在技术上是如何实现的?
- java - 处理多个版本的 XSD 生成的类
- sql - 如何在oracle sql中的where条件中使用case语句?
- excel - 来自不同工作表的 Vlookup 动态范围参考
- telegram - 如何向 api.telegram.org 发送大消息
- android - PSPDFKit Android SDK 是否支持在线查看 PDF 文件?提供在线 PDF 文件?
- angular - Angular 模板:在同一指令中使用“as”生成的别名?
- java - SQL如何在分组中查找具有最大created_date的行的ID
- reactjs - 使用 react.js 的 spring 身份验证发送乱码响应