【发布时间】:2019-11-12 04:33:55
【问题描述】:
我有一个通过语音到文本生成的 json 文件,它返回所有检测到的带有标点符号的单词。现在我想用它创建句子。
我可以创建一个 while 循环,直到检测到一个点,将所有单词附加到一个列表中并从中返回一个句子。但是这个 while 循环在第一个点处停止。我怎样才能让这个循环一直持续到 json 文件的末尾?
with open(json_file) as f:
data = json.load(f)
for word in data['words']:
while not data['words'][i]['name'] == '.':
sentenceList.append(data['words'][i]['name'])
i +=1
sentence = ' '.join(word for word in sentenceList)
print (sentence)
json 示例:
"words": [
{
"duration": "0.18",
"confidence": "0.990",
"name": "Is",
"time": "0.80"
},
{
"duration": "0.27",
"confidence": "1.000",
"name": "dit",
"time": "0.99"
},
{
"duration": "0.24",
"confidence": "1.000",
"name": "met",
"time": "1.50"
},
{
"duration": "0.54",
"confidence": "0.990",
"name": "vaart",
"time": "1.86"
},
{
"duration": "0.33",
"confidence": "0.990",
"name": ".",
"time": "2.40"
},
{
"duration": "0.06",
"confidence": "0.910",
"name": "We",
"time": "2.73"
},
{
"duration": "0.21",
"confidence": "1.000",
"name": "hebben",
"time": "2.79"
},
{
"duration": "0.09",
"confidence": "1.000",
"name": "het",
"time": "3.00"
},
{
"duration": "0.42",
"confidence": "1.000",
"name": "vandaag",
"time": "3.09"
},
{
"duration": "0.30",
"confidence": "1.000",
"name": "over",
"time": "3.51"
},
{
"duration": "0.60",
"confidence": "1.000",
"name": "België",
"time": "3.81"
},
{
"duration": "0.18",
"confidence": "1.000",
"name": ".",
"time": "4.50"
}
【问题讨论】:
-
您可以将第二个 while 循环
while not更改为条件循环,并在完成所有所需逻辑后的一段时间内清除sentenceList的内容。可能有很多方法可以实现这一点,包括使用 lambda 函数。 -
你能发布预期的输出吗?