打印流字符串的一部分?

Print a part of stream-string?

如何通过提供符号作为参考来打印 's':、'E': 或 'p': 等冒号后的内容?我根据目前所知道的一切尝试了这个,但我得到了一个奇怪的错误:

        XXXX = f"{{'stream': 'ABCDEF', 'data': {{'s': 'ABC', 'E': 1123, 'p': '0.0',  'q': '0.0'}}}}"
        print(XXXX)
        print(XXXX['data']['p'])

输出:

{'stream': 'ABCDEF', 'data': {'s': 'ABC', 'E': 1123, 'p': '0.0',  'q': '0.0'}}
Error: in main: print(XXXX['data']['p'])
       TypeError: string indices must be integers

通过使用ast模块,你可以简单地做你需要的:

import ast
XXXX = f"{{'stream': 'ABCDEF', 'data': {{'s': 'ABC', 'E': 1123, 'p': '0.0',  'q': '0.0'}}}}"
myDict = ast.literal_eval(XXXX)
print(myDict["data"]["p"])

输出

'0.0'

由于 XXXX 是一个字符串,而您提供的示例是您要转换的 json,因此我建议如下:

import json

#replace the single quote for double quote in order to parse the json string
x = json.loads(XXXX.replace("'", '"'))

#print the dictionary key you wanted
print(x['data']['p'])

对于给定的输入,这按预期工作。如果您有任何其他样品与提供的样品不同,请告诉我。