在ascii编码字符串

时间:2016-11-09 03:37:32

标签: python python-3.x

这里的新编码器应该是一个非常简单的问题:

我正在尝试创建一个脚本,该脚本使用此代码添加连续数字并将其转换为ascii并打印出来:

x = '36 30 25 40 80 4
     37 30 25 40 80 4'

     40 30 25 40 80 4
nums = [int(n) for n in x.split()]
''.join(chr(sum(nums[i:i+2])) for i in range(0, len(nums), 2))

我希望输出为

  

BAT CAT

     

FAT

......但现在是BATCATFAT

那么如何在每个新词之间创建一个空格呢?

我意识到这可能是一种过度解释的方式,很抱歉。

此外,我已经认为我知道如何使用简单的if / else循环创建新行来检测空列表

1 个答案:

答案 0 :(得分:0)

这是一种方法:

data = """36 30 25 40 80 4
37 30 25 40 80 4
40 30 25 40 80 4"""

lines = [x for x in data.split("\n")]
nums_list = [[int(c) for c in x.split(" ")] for x in lines]
char_list = [[chr(sum(nums[i:i+2])) for i in range(0, len(nums), 2)] for nums in nums_list]
word_list = [''.join(c) for c in char_list]

print(" ".join(word_list))

也许不是最优雅的,但它确实有效:

BAT CAT FAT

打印出我们上面采用的每个数据转换的内容:

> print(lines)
['36 30 25 40 80 4', '37 30 25 40 80 4', '40 30 25 40 80 4']

> print(nums_list)
[[36, 30, 25, 40, 80, 4], [37, 30, 25, 40, 80, 4], [40, 30, 25, 40, 80, 4]]

> print(char_list)
[['B', 'A', 'T'], ['C', 'A', 'T'], ['F', 'A', 'T']]

> print(word_list)
['BAT', 'CAT', 'FAT']