python - 用python3中的特定元素替换元素组
问题描述
我有一个超过 50 个元素的列表。这些元素是小写和大写字母、数字、特殊字符。
例如。
sample_list = ['1', '0', 'b', 'B', '2', '6', 'a', '7', '9', '5', 'c', 'd', '4', 'A', 'C', 'f', 'D', 'F', '3', 'C', '8', 'A', 'F', 'B', 'A', 'A', 'D']
我想用特殊字符交换特定元素。例如。
replacing `A,B,C and 1 with @
replacing `D,E,F and 2 with &
replacing `G,H,I and 3 with (
等等,我必须用 11 个选定的特殊字符替换一组特定的元素。就像我用 3 个特殊字符替换了几个选定的元素一样。
如何有效地做到这一点。
解决方案
您可以使用translate
以下方法进行操作:
sample_list = ['1', '0', 'b', 'B', '2', '6', 'a', '7', '9', '5', 'c', 'd', '4', 'A', 'C', 'f', 'D', 'F', '3', 'C', '8', 'A', 'F', 'B', 'A', 'A', 'D']
t = ''.maketrans('ABC1DEF2GHI3','@@@@&&&&((((')
out = [i.translate(t) for i in sample_list]
print(out)
输出:
['@', '0', 'b', '@', '&', '6', 'a', '7', '9', '5', 'c', 'd', '4', '@', '@', 'f', '&', '&', '(', '@', '8', '@', '&', '@', '@', '@', '&']
maketrans
的方法str
用于创建翻译表,只需输入两个相等长度str
的 s,第一个由键组成,第二个由值组成。translate
方法接受该表并相应地替换字符,或者如果表中没有这样的键,则保持原始不变。
编辑:正如 Olivier Melançon 所指出的,只有当您想用 1 个字符替换 1 个字符时才能使用它。
推荐阅读
- ruby-on-rails - Rails 不知从何处添加 API 字段
- php - 在 foreach 循环中及时返回
- sql-server - 全文搜索条件“,”中“,”附近的语法错误
- python-3.x - 如何将画布保存在程序列表中,然后对其进行迭代以显示对象?
- c# - Visual Studio Windows 服务 c# exe 文件丢失
- python - 需要动态地从用户那里获取文件
- java - 如何防止从 Postman 调用 Rest WebService?
- python - 如何为循环创建动态范围?
- android - 为什么我无法将 firebase 电子邮件密码登录链接到 google 登录?
- react-native - 如何使用 apollo-hooks 为 react-native 创建实用程序