【问题标题】:How to Separate Letters Inside a List?如何分隔列表中的字母?
【发布时间】:2021-11-24 04:14:09
【问题描述】:

我有这段代码

First = "152 162 152 145 162 167 150 172 153 162 145 170 141 16"
First = list(First.split())
solve = " "
for i in First:
    solve += chr(int(i, base=8))
print(solve)

我坚持的是如何分隔列表中的字母,而不是一起打印所有字母。我试过solve = (solve.split(",") for sep in solve),但它给了我一个错误。我要做的就是取每个字母的ord() 值并减去4,然后通过chr() 将其返回给str

【问题讨论】:

  • 你想要的输出/结果是什么?
  • 字母列表 = ["j","e","j" ....etc ]
  • 生成器理解需要一些修改才能工作,试试这个solve = (sep.split(",") for sep in solve)

标签: python list cryptography


【解决方案1】:

您可以使用列表推导:

data = "152 162 152 145 162 167 150 172 153 162 145 170 141 16"
output = [chr(int(x, base=8)) for x in data.split()]
print(output) # ['j', 'r', 'j', 'e', 'r', 'w', 'h', 'z', 'k', 'r', 'e', 'x', 'a', '\x0e']

如果您只想使用原始代码,那么只需 list(solve) 即可创建字符列表。但请注意,solve 的开头有一个(可能是无意的)空白;发生这种情况是因为您使用" " 发起solve,而不是""


如果你想从字符的每个整数表示中减去 4(正如你在问题中解释的那样),得到字符串,那么

data = "152 162 152 145 162 167 150 172 153 162 145 170 141 16"
output = ''.join(chr(int(x, base=8) - 4) for x in data.split())
print(output) # fnfansdvgnat]

将为您提供快捷方式。

【讨论】:

  • 做得很好,谢谢先生。
【解决方案2】:

你可以直接用list代替string,如下:

First = "152 162 152 145 162 167 150 172 153 162 145 170 141 16"
First = list(First.split())
solve = []
for i in First:
    solve.append( chr(int(i, base=8)))
print(solve)

Output: ['j', 'r', 'j', 'e', 'r', 'w', 'h', 'z', 'k', 'r', 'e', 'x', 'a', '\x0e']

您可以将求解转换为字符串,如下所示:

''.join(solve)

【讨论】:

    猜你喜欢
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多