python - 如何仅在python中需要时才解码
问题描述
我有一个混合数据集,其中一些是字符串,一些是字节,如下所示。
mydata={'data mining': [b'data', b'text mining', b"artificial intelligence"], 'neural networks': ['cnn', 'rnn', "artificial intelligence"]}
我的代码如下
for key, value in mydata.items():
for item in value:
print(type(item))
由于某些值是字节,我想将它们转换为字符串。因此,我对上述代码进行了以下更改。
for key, value in mydata.items():
for item in value:
print(type(item.decode("utf-8")))
但是,然后我收到一条错误消息;AttributeError: 'str' object has no attribute 'decode'
我也试过:
for key, value in mydata.items():
for item in value:
if type(item) == 'str':
print(type(item))
但这对我不起作用。
有没有办法解决这个问题?
解决方案
以下是评论中各种建议的实施。检查列表元素是否是字节对象,如果是则解码(由于字节对象是不可变的,我将列表元素替换为解码版本)。
mydata = {'data mining': [b'data', b'text mining', b'artificial intelligence'], 'neural networks': ['cnn', 'rnn', "artificial intelligence"]}
for items in mydata.values():
for i, item in enumerate(items):
if isinstance(item, bytes):
items[i] = item.decode()
print(mydata)
# OUTPUT
# {'data mining': ['data', 'text mining', 'artificial intelligence'], 'neural networks': ['cnn', 'rnn', 'artificial intelligence']}
推荐阅读
- python - Python上的随机密码生成器
- azure-cosmosdb - Cosmos Db 更改 Feed 未提供预期结果
- excel - 填写链接值
- sql - 为什么 SQL Server datetime 数据类型和 datetimepicker 在 VB.NET 上搜索没有结果?
- mongodb - 在 Mongo ReplicaSet 中更新 mongo SSL-Cerificates
- ios - 使用 Core Data 从后台线程获取
- python - 用树莓派播放音乐的可能性有哪些
- swift - 如何固定 tableHeaderView?
- java - 未能执行目标 org.apache.maven.plugins:maven-dependency-plugin:2.9:analyze-only (默认)
- azure-pipelines - 在哪里可以找到不同 msbuildargs 选项的文档?