如何从tup中获得特定的东西

2024-09-28 22:42:13 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个元组:

(<GstStructure at 0xb270e080>, ' audio/x-raw, rate=(int)44100, layout=(string)interleaved, format=(string){ S8, S16LE, S32LE, S24LE, F32LE, F64LE }, channels=(int)[ 1, 2147483647 ]; audio/x-raw, rate=(int)[ 1, 2147483647 ], channels=(int)1, format=(string)F32LE, layout=(string)interleaved; audio/x-raw, rate=(int)[ 1, 2147483647 ], layout=(string)interleaved, format=(string){ S8\x91\x00\x00\x00@\x00p\xb2@\x00p\xb2LE, S24LE, F32LE, F64LE }, channels=(int)[ 1, 2147483647 ]')

我想得到速率,但元组实际上只有两个元素。我怎样才能拿到价格?你知道吗


Tags: formatstringrawrateaudioint元组layout
3条回答

元组的第二个值似乎是由元组的第一个值提供的GStructure对象的字符串表示。你知道吗

您可以如上所述解析字符串以检索rate值(尽管有2个可能的值:44100[ 1, 2147483647 ],我们假设44100就是您想要的值)。你知道吗

如果要使用GStructure实例,根据GStreamer GStructure的文档,可以使用get_value()方法:

your_tuple[0].get_value("rate")

你能试试吗?你知道吗

让我们称你的元组为“元组”;然后你可以这样做:

strings = tuple[1].split(', ') //Splitting the second item base on the ', ' delimiter
rate = strings[1][10:] //The number you want starts at the 10th character of the second object in the array

如果流的格式发生了变化,您将不得不对其进行不同的解析,您还可以在数组中执行for循环并搜索“rate=(int)”。你知道吗

your_tuple[1].split(', ')[1].split('=(int)')[1]

您将获得\u元组的第二个元素。然后你把它分在“,”上,这会给你:

[' audio/x-raw', 'rate=(int)44100', 'layout=(string)interleaved', 'format=(string){ S8', 'S16LE', 'S32LE', 'S24LE', 'F32LE', 'F64LE }', 'channels=(int)[ 1', '2147483647 ]; audio/x-raw', 'rate=(int)[ 1', '2147483647 ]', 'channels=(int)1', 'format=(string)F32LE', 'layout=(string)interleaved; audio/x-raw', 'rate=(int)[ 1', '2147483647 ]', 'layout=(string)interleaved', 'format=(string){ S8\x91\x00\x00\x00@\x00p\xb2@\x00p\xb2LE', 'S24LE', 'F32LE', 'F64LE }', 'channels=(int)[ 1', '2147483647 ]']

在第二个元素上,对“=(int)”进行另一次拆分,这就是第二个元素。你知道吗

也就是“44100”

相关问题 更多 >