如何在python中从字符串的特定位置读取一组字符



所以我写自己的密码和解码器是为了好玩,但我被我的解密程序卡住了,我需要在字符串中向上移动1个字符才能解密下一个";块";个字符。

cyinput2 = ",#96c8a2: ,#808000: ,#96c8a2: ,#e1a95f: ,#808000: ,#6f00ff:"
#989E86

上面是我试图向上移动的弦,本质上我试图从我的一垒6弦移动到第二垒,在这种情况下,这将是"#808000";然后从每个逗号以10个字符为增量依次类推。

我试着加入一些想法,比如只添加1个字符作为每个6进制字符串之间的空格,但我没能弄清楚。我还开始使用一个设置为整数0的变量,在每个字符串转换回十六进制后,该变量将增加10。但我还没有从中得出任何结果,所以我希望这里的人能够阻止我走极端,而我可以使用一个简单得多的解决方案。

while str(cyinput2) != "":
S = 0
S1 = 9
hexstart = ','
hexend = ':'
start_index = cyinput2.find(hexstart) + len(hexstart)
end_index = cyinput2.find(hexend)
block = cyinput2[start_index:end_index]
print(block) 

您可以简单地使用split将字符串转换为列表,如果你想要干净的块,你可以使用替换太

# Removing useless chars in order to have a clean split
cyinput2 = cyinput2.replace(',', '')
cyinput2 = cyinput2.replace(':', '')
# From : ",#96c8a2: ,#808000: ,#96c8a2: ,#e1a95f: ,#808000: ,#6f00ff:"
# to :   "#96c8a2 #808000 #96c8a2 #e1a95f #808000 #6f00ff"
# Split
cyinput2 = cyinput2.split(' ')
# From : "#96c8a2 #808000 #96c8a2 #e1a95f #808000 #6f00ff"
# to : ["#96c8a2", "#808000", "#96c8a2", "#e1a95f", "#808000", "#6f00ff"]
for block in cyinput2:
print(block)

您可以在循环时使用此选项

cyinput2 = ",#96c8a2: ,#808000: ,#96c8a2: ,#e1a95f: ,#808000: ,#6f00ff: "
while len(str(cyinput2)) > 9 :
print(cyinput2[1:10])
cyinput2 = cyinput2.replace(cyinput2[0:10],'')

Output


#96c8a2: 
#808000: 
#e1a95f: 
#6f00ff: 

最新更新