将Javascript函数转换为Python

将Javascript函数转换为Python,javascript,python-3.x,Javascript,Python 3.x,我是Python的新手,我很难将这个Javascript箭头函数翻译成Python。当我找到“\x1D”时,我无法在JS中使用substring来获取循环中的下3个值。有什么建议吗 module.exports = edi => { let decompressedEdi = '' let lastCompressor = 0 for (let i = 0; i <= edi.length; i++) { if (edi[i] === '\x1D') {

我是Python的新手,我很难将这个Javascript箭头函数翻译成Python。当我找到“\x1D”时,我无法在JS中使用substring来获取循环中的下3个值。有什么建议吗

module.exports = edi => {
  let decompressedEdi = ''
  let lastCompressor = 0
  for (let i = 0; i <= edi.length; i++) {
    if (edi[i] === '\x1D') {
      let decimal = parseInt(edi.substring(i + 1, i + 3), 16)
      let repeater = edi[i + 3]
      decompressedEdi +=
        edi.substring(lastCompressor, i) + repeater.repeat(decimal)
      lastCompressor = i + 4
    }
  }
  decompressedEdi += edi.substring(lastCompressor, edi.length)
  return decompressedEdi.replace(/(\r\n|\n|\r)/gm, '')
}
module.exports=edi=>{
让解压后的dedi=“”
设lastCompressor=0

对于python中的(设i=0;i),字符串可以像数组一样切片:

for i, c in enumerate(edi):
  if c == '\x1D':
    decimal = int(edi[i+1:i+3], 16)
int函数具有以下签名:int(str,base)

from re import sub
def解压缩(edi):
解压缩=“”
最后一个压缩机=0
对于枚举(edi)中的i、c:
如果c==“\x1D”:
重复次数=整数(edi[i+1:i+3],16)
重复_char=edi[i+3]
解压缩+=edi[最后一个压缩程序:i]+重复字符*重复
最后一个压缩机=i+4
解压缩+=edi[最后一个压缩机:-1]
返回子文件(“\r\n |\n |\r”,已解压缩)

我是怎么读代码的 可以忽略这一点,但这可能会有所帮助


给定具有
len
edi
,对于匹配
\x1D
的每个
edi
,从
index+1
index+3
获取
edi
的子字符串,作为设置为
decimal
的十六进制整数。
中继器
edi的
索引+3
第个元素ode>对于每个元素,它应该是一个
str
。它将重复
decimal
中定义的十六进制次数,但仅在
edi
的子字符串从
lastCompressor
到当前索引后重复。在匹配
\x1D
的每次迭代中,
lastCompressor
将增加轻松了4。

这段代码是做什么的?你能展示一下你的尝试/你做了多少吗?这里可能会遇到一些编码问题,但这应该是一个很好的开始。这肯定会有帮助,你将如何使循环得到[i+1:i+3]?edi是一个字符串。如果我在edi中写:for i:If i='\x1d':decimal=int(edi[i+1:i+3],16)我将得到一个错误,因为我是一个字符串,而不是一个integer@MaximeMorin-在问题的综合性讨论中,你可以发表意见。这是我的建议,也是我的宣言。
i
。我的建议是列举,谢谢你的解决方案