2 回答
TA贡献1906条经验 获得超3个赞
在python中,字符串可以像数组一样切片:
for i, c in enumerate(edi):
if c == '\x1D':
decimal = int(edi[i+1:i+3], 16)
int 函数具有以下签名: int(str, base)
TA贡献1813条经验 获得超2个赞
from re import sub
def decompress(edi):
decompressed = ""
last_compressor = 0
for i, c in enumerate(edi):
if c == "\x1D":
repetitions = int(edi[i + 1: i + 3], 16)
repeating_char = edi[i + 3]
decompressed += edi[last_compressor:i] + repeating_char * repetitions
last_compressor = i + 4
decompressed += edi[last_compressor:-1]
return sub("\r\n|\n|\r", decompressed)
我如何阅读代码
随意忽略这一点,但它可能会有所帮助。
给定edi其中有一个len,对于每个edi匹配的\x1D,获取edi从index + 1到index + 3作为 设置为 的十六进制整数的子串decimal。The repeateris the index + 3'th element of edifor each element and it is expected to be a str. 它将重复 中定义的十六进制次数decimal,但仅在edifromlastCompressor到当前索引的子字符串之后重复。在\x1D匹配的每次迭代中,lastCompressor增加 4。
添加回答
举报