跨栏棋盘密码(Straddle Checkboard Cipher)解密及列表操作求助:字符串转列表失败
解决空格分隔字符串转列表的问题(适配跨栏棋盘密码解密需求)
嘿,我完全懂你遇到的困扰——直接用list()处理像"77 65 84"这样的字符串,只会把每个字符(包括空格)拆成单独的列表元素,根本达不到你要的按空格分割成完整数字字符串的效果。针对这个场景,给你两个实用的解决方案:
方法1:使用字符串内置的split()方法(最推荐)
这是处理空格分隔字符串最直接的方式,split()默认会按任意空白字符(单个空格、多个连续空格、制表符等)分割,还会自动忽略字符串首尾的空白,非常适配你的需求:
# 示例代码 cipher_str = "77 65 84" decoded_list = cipher_str.split() print(decoded_list) # 输出: ["77", "65", "84"]
如果你的字符串是严格用单个空格分隔,也可以写成split(' '),但默认的split()更健壮,能处理意外出现的多个连续空格情况。
方法2:正则表达式分割(适合复杂场景)
如果需要处理更复杂的空白情况(比如混合了制表符和空格),或者要提前清理首尾空白,可以用正则表达式的re.split():
import re cipher_str = "77 65 84" # 这里有多个连续空格 # 先去掉首尾空白,再按一个或多个空白字符分割 decoded_list = re.split(r'\s+', cipher_str.strip()) print(decoded_list) # 输出: ["77", "65", "84"]
为什么list()不行?
简单说,list()的作用是把字符串逐个字符拆解成列表元素,比如执行list("77 65 84"),得到的结果是['7', '7', ' ', '6', '5', ' ', '8', '4'],完全不符合你按空格分割完整数字组的需求。
内容的提问来源于stack exchange,提问作者explorer
相关产品推荐
相关产品推荐

