开源软件SOX是一个命令行界面工具,可以处理音频文件。它具有stat函数,该函数返回与音频文件有关的数据。该数据以字符串形式返回-很难使用的字符串。

下面是由SOX返回的字符串的示例。

\ n输入文件:'E:\ path \ to \ file \ filename.wav'\ n通道:1 \ n采样率:176400 \ n精度:16位\ n持续时间:00:00:30.00 = 5292001个样本〜2250个CDDA扇区\ nFile大小:10.6M \ n比特率:2.82M \ n示例编码:16位带符号整数PCM \ n“

和...

读取的样本:5292001 \ n长度(秒):30.000006 \ n缩放比例:2147483647.0 \ n最大振幅:0.705475 \ n最小振幅:-0.705475 \ n中线振幅:0.000000 \ n平均模数:0.449045 \ n平均振幅:0.000153 \ nRMS振幅:0.498788 \ n最大增量:1.410950 \ n最小变化量:0.000000 \ n平均变化量:0.571030 \ nRMS变化量:0.704606 \ n粗糙频率:39659 \ n音量调整:1.417 \ n \ n尝试:-t raw -e mu-law -b 8'

一个值可能具有的字符数可以从一个文件更改为另一个文件,并且某些文件实际上将完全丢失某些值。

如何从这些字符串中获取简单的值字典?

解决方案

您可以split打开'\n',然后dict通过拆分将对提供给构造函数':':

给定第二个示例字符串:

>>> s = """Samples read: 5292001\nLength (seconds): 30.000006\nScaled by: 2147483647.0\nMaximum amplitude: 0.705475\nMinimum amplitude: -0.705475\nMidline amplitude: 0.000000\nMean norm: 0.449045\nMean amplitude: 0.000153\nRMS amplitude: 0.498788\nMaximum delta: 1.410950\nMinimum delta: 0.000000\nMean delta: 0.571030\nRMS delta: 0.704606\nRough frequency: 39659\nVolume adjustment: 1.417\n\nTry: -t raw -e mu-law -b 8 '"""

可以通过以下方式创建字典:

>>> dict(r.strip().split(':', 1) for r in s.split('\n') if r)

其中,if r负责过滤掉空行和1在分裂负责执行只在一组(这样的字符串一样Duration有很多":"不会得到分头多次)。

这样产生:

{'Length (seconds)': ' 30.000006',

'Maximum amplitude': ' 0.705475',

'Maximum delta': ' 1.410950',

'Mean amplitude': ' 0.000153',

'Mean delta': ' 0.571030',

'Mean norm': ' 0.449045',

'Midline amplitude': ' 0.000000',

'Minimum amplitude': ' -0.705475',

'Minimum delta': ' 0.000000',

'RMS amplitude': ' 0.498788',

'RMS delta': ' 0.704606',

'Rough frequency': ' 39659',

'Samples read': ' 5292001',

'Scaled by': ' 2147483647.0',

'Try': " -t raw -e mu-law -b 8 '",

'Volume adjustment': ' 1.417'}

同样,对于第一个示例字符串:

>>> s = """\nInput File : 'E:\\path\\to\\file\\filename.wav'\nChannels : 1\nSample Rate : 176400\nPrecision : 16-bit\nDuration : 00:00:30.00 = 5292001 samples ~ 2250 CDDA sectors\nFile Size : 10.6M\nBit Rate : 2.82M\nSample Encoding: 16-bit Signed Integer PCM\n"""

>>> dict(r.strip().split(':', 1) for r in s.strip().split('\n') if r)

{'Bit Rate ': ' 2.82M',

'Channels ': ' 1',

'Duration ': ' 00:00:30.00 = 5292001 samples ~ 2250 CDDA sectors',

'File Size ': ' 10.6M',

'Input File ': " 'E:\\path\\to\\file\\filename.wav'",

'Precision ': ' 16-bit',

'Sample Encoding': ' 16-bit Signed Integer PCM',

'Sample Rate ': ' 176400'}

python字典转字符串并输出其长度_从Python中SOX的字符串输出中获取字典中的可用数据...相关推荐

  1. python同时输出名字和时间_Python学习笔记 (2) :字符串输出、操作、格式化和日期、时间格式化...

    一.字符串输出及运算 1.常用输出格式及方法 1 print('1234567890')#单引号 2 print("1234567890")#双引号 3 print("& ...

  2. python一个字符占几个字节_关于python:这个字节字符串实际占用了多少内存?

    我的理解是os.urandom(size)输出一个给定"size"的随机字节串,但是: import os import sys print(sys.getsizeof(os.ur ...

  3. python 删除重复字符_Google面试问题指南:使用Python删除重复出现的字符

    python 删除重复字符 by Anthony Sistilli 安东尼·西斯蒂里(Anthony Sistilli) Google面试问题指南:使用Python删除重复出现的字符 (Google ...

  4. python输出列表元素_在Python中分别打印列表中的每一个元素方法

    在Python中分别打印列表中的每一个元素方法 更新时间:2018年11月07日 15:12:03 作者:wintersshi 今天小编就为大家分享一篇在Python中分别打印列表中的每一个元素方法, ...

  5. python杨辉三角函数_python杨辉三角输出指定行_使用python打印十行杨辉三角过程详解...

    如何用python输出杨辉三角 程序输出需要实现如下效果: [1] [1,1] [1,2,1] [1,3,3,1] .. 方法:迭代,生成器 12345678910111213141516171819 ...

  6. python杨辉三角输出指定行_python杨辉三角输出指定行_使用python打印十行杨辉三角过程详解...

    如何用python输出杨辉三角 程序输出需要实现如下效果: [1] [1,1] [1,2,1] [1,3,3,1] .. 方法:迭代,生成器 12345678910111213141516171819 ...

  7. 下列python语句的输出结果是_下列Python语句的输出结果是_______________。

    [判断题]All arguments have a conclusion. (10.0分) [单选题]在关于学校萌芽的传说中,有一种学校的名称是"庠",这个场所是( ) [单选题] ...

  8. 用python输出下列图案_使用Python打印图案“有趣”

    我不想直接打印字符,而是先使用专用函数将它们保存到字符串中.一旦有了这些字符串,它们就可以很容易地组合成单词:def pattern_f(): return [ ''.join([ 'F' if (c ...

  9. 下列python语句的输出结果是_下列Python语句的输出结果是________________

    [填空题]在Python中一行书写两条语句时,语句之间可以使用__________作为分隔符. [填空题]Python语句序列"a,b=3,4; a,b=b,a; print(a,b) &q ...

最新文章

  1. 周杰伦入局元宇宙? 6200万个联名「幻象熊」40分钟全卖光!
  2. 超级有意思的代码注释
  3. Mckinsey insights!
  4. Java入门系列-26-JDBC
  5. MATLAB的GUI设置为不能点击状态(将按钮变为灰色)
  6. ReactNative(三)——WebStorm的基本配置
  7. 书荒季 | “超长待机”的假期,收好这份信息安全书单!
  8. GNSS说第(四)讲---最新最全的IGS分析中心详情
  9. 《JAVA中的集合框架》
  10. ORA-28547 连接服务器失败
  11. linux docker容器MySQL自动备份发送到邮箱
  12. 什么是APS系统?导入APS要注意什么?值得反复观看
  13. mac的计算机名称,mac 如何修改计算机名_mac 修改计算机名称
  14. inux下服务器心跳集群脚本
  15. Log4J的入门简介学习【转】
  16. C# 语言程序设计笔记
  17. Spark word2vec使用
  18. Android取消选择单选按钮,如何取消选中Android中的单选按钮
  19. CycloneDDS(4)Security插件图解
  20. 适合ipad的python编程软件-iPad编程软件推荐(一) —— Pythonista 3

热门文章

  1. javaScript案例——二级联动、三级联动、省市区三级联动
  2. “小镇青年”、“互联网老兵”、“币圈韭菜” 玉红的众多标签为哪般?
  3. C/C++超级大火锅
  4. Prometheus 容器化部署,配合Grafan画图工具监控节点
  5. 编程达人教你如何快速掌握一门编程语言
  6. 04 ARM Mali-V VPU硬件视频编解码驱动介绍V61
  7. Docker + Gitlab + Gitlab CI(三)
  8. JAVAEE和项目开发——JSP详解
  9. OpenCL设备存储形式
  10. 【云原生】云原生在网络安全领域的应用