如何拆分列表中的独立字符,对每个字符ord运算减4后转回chr字符串
错误原因
你使用的split(",")需要字符串存在逗号作为分隔符才能拆分,而你拼接后的字符串没有逗号,同时写法是生成器表达式,不符合拆分单个字符的需求。Python中直接用list(目标字符串)即可将字符串按单个字符拆分为列表。
实现方案
你不需要先拼接字符串再拆分,直接在八进制转字符环节处理效率更高,两种实现方式如下:
方式1:列表推导式实现(代码更简洁)
First = "152 162 152 145 162 167 150 172 153 162 145 170 141 16" # 拆分八进制字符串为列表 oct_list = First.split() # 直接转字符后执行ord减4操作 final_str = ''.join([chr(ord(chr(int(i, base=8))) - 4) for i in oct_list]) print(final_str)
方式2:分步实现(更易读,可单独拿到字符列表)
First = "152 162 152 145 162 167 150 172 153 162 145 170 141 16" oct_list = First.split() # 存储转码后的单个字符列表 char_list = [] for oct_val in oct_list: char_list.append(chr(int(oct_val, base=8))) # 对每个字符做ord减4处理 final_str = "" for c in char_list: final_str += chr(ord(c) - 4) print(final_str)
注意事项
你原有代码中初始化solve = " "会在结果开头多一个空格,若不需要额外空格,初始化时应设为空字符串solve = ""。
内容的提问来源于stack exchange,提问作者iis2h
相关产品推荐
相关产品推荐

