我正在使用wav
模块读取python中的wave
音频文件。此库中的readframe()
函数将帧作为十六进制字符串返回。我想删除这个字符串的\x
,但是translate()
函数不能按我的要求工作:
>>> input = wave.open(r"G:\Workspace\wav\1.wav",'r')
>>> input.readframes (1)
'\xff\x1f\x00\xe8'
>>> '\xff\x1f\x00\xe8'.translate(None,'\\x')
'\xff\x1f\x00\xe8'
>>> '\xff\x1f\x00\xe8'.translate(None,'\x')
ValueError: invalid \x escape
>>> '\xff\x1f\x00\xe8'.translate(None,r'\x')
'\xff\x1f\x00\xe8'
>>>
我想用任何方法将结果值除以2,然后再次添加
\x
并生成包含这些新值的新wav
文件。有人有更好的主意吗?发生了什么?
最佳答案
事实上,你的绳子上没有反睫毛。所以,这就是为什么你不能移除它们。
如果您尝试使用此字符串中的每个十六进制字符(使用ord()
和len()
函数),您将看到它们的实际值。另外,你的绳子长度只有4,不是16。
您可以使用多种解决方案来实现您的结果:
“十六进制”编码:
'\xff\x1f\x00\xe8'.encode('hex')
'ff1f00e8'
或使用
repr()
功能:repr('\xff\x1f\x00\xe8').translate(None,r'\\x')