我有一个文件(https://pastebin.com/STgtBRS8),需要在其中搜索所有出现的单词“silencedetect”。
然后我必须生成一个JSON文件,其中包含“silence\u start”、“silence\u end”和“silence\u duration”的键值。
JSON文件应该如下所示:
[
{
"id": 1,
"silence_start": -0.012381,
"silence_end": 2.2059,
"silence_duration": 2.21828
},
{
"id": 2,
"silence_start": 5.79261,
"silence_end": 6.91955,
"silence_duration": 1.12694,
}
]
这就是我尝试过的:
with open('volume_data.csv', 'r') as myfile:
data = myfile.read().replace('\n', '')
for line in data:
if "silencedetect" in data:
#read silence_start, silence_end, and silence_duration and put in json
我无法将3个键值对与每个“silencedetect”关联。如何解析键值并以JSON格式获取它们?你知道吗
假设您的数据是有序的,您可以简单地对其进行流式解析,完全不需要regex和加载整个文件:
你会得到:
请记住,JSON不订阅数据顺序(v3.5之前的Python
dict
也不订阅),因此id
不一定出现在第一位,但数据有效性是相同的。你知道吗我特意分离了最初的
entry
创建,这样您就可以使用collections.OrderedDict
作为替换(即entry = collections.OrderedDict({"id": current_id})
)来保留顺序(如果您希望的话)。你知道吗使用
re.findall
和enumerate
函数的复杂解决方案:输出:
你可以用正则表达式。这对我很有用
您可以通过执行
输出:
编辑: 修复了由于
frame=..
行落在匹配的开始和结束之间而丢失一些匹配的错误相关问题 更多 >
编程相关推荐