例如:
blahblah|0A 4D 5E 43|adfsdasd|92| sgagrewas|12 5E|
必须成为
blahblahx0Ax4Dx5Ex43adfsdasdx92 sgagrewasx12x5E
我正在尝试一些类似的东西:re.sub(r'\|(\w+ ?)*\|', r'x\1', a)
但是我很难让它在第一场比赛之外发挥作用。
更新:看起来正则表达式不是一个好的选择。pyparsing 解决方案可行吗?
如果没有,我可以编写一个简单的迭代解决方案,但我更喜欢可扩展的东西。但我很难让它比第一场比赛更有效。
UPDATE2:我最后使用了纯python方法,它工作正常,也可以处理转义字符。
def strtohex(self, string):
hexmode = False
hexstring = ''
i=0
while i<len(string):
if string[i] == '\\':
i += 1
#No escape charecters inside hex pipes
hexstring += string[i]
elif string[i] == '|':
hexmode = not hexmode
elif string[i] == ' ':
hexstring += '' if hexmode else ' '
else:
if hexmode:
hexstring += chr(int(string[i:i+2],16))
i += 1
else:
hexstring += string[i]
i += 1
return hexstring