gpt4 book ai didi

python - 如何将字符串与未形成的字符串分开

转载 作者:太空狗 更新时间:2023-10-30 01:42:55 25 4
gpt4 key购买 nike

我有这种格式的字符串

 2013-06-05T11:01:02.955 LASTNAME=Jone FIRSTNAME=Jason PERSONNELID=salalm QID=231412 READER_NAME="CAZ.1 LOBBY LEFT TURNSTYLE OUT" ACCESS_TYPE="Access Granted" EVENT_TIME_UTC=1370480141.000 REGION=UTAH

有些是这样的

 2013-06-05T11:15:48.670 LASTNAME=Ga FIRSTNAME="Je " PERSONNELID=jega QID=Q10138202 READER_NAME="CAZ.1 ELEVATOR LOBBY DBL GLASS" ACCESS_TYPE="Access Granted" EVENT_TIME_UTC=1370481333.000 REGION=UTAH

我想提取 PERSONNELID,REGION,ACCESS_TYPE,EVENT_TIME_UTC 的值

我打算使用 split("") 但是 READER_NAME 和 ACCESS_TYPE 值有一堆空格我可以转换为 JSON 并按键搜索吗

提取这些字符串的方法是什么。

提前致谢

最佳答案

我发现过去有用的一个 hack 是使用 shlex.split :

>>> s = '2013-06-05T11:01:02.955 LASTNAME=Jone FIRSTNAME=Jason PERSONNELID=salalm QID=231412 READER_NAME="CAZ.1 LOBBY LEFT TURNSTYLE OUT" ACCESS_TYPE="Access Granted" EVENT_TIME_UTC=1370480141.000 REGION=UTAH'
>>> split = shlex.split(s)
>>> split
['2013-06-05T11:01:02.955', 'LASTNAME=Jone', 'FIRSTNAME=Jason',
'PERSONNELID=salalm', 'QID=231412', 'READER_NAME=CAZ.1 LOBBY LEFT TURNSTYLE OUT',
'ACCESS_TYPE=Access Granted', 'EVENT_TIME_UTC=1370480141.000', 'REGION=UTAH']

然后我们可以把它变成字典:

>>> parsed = dict(k.split("=", 1) for k in split if '=' in k)
>>> parsed
{'EVENT_TIME_UTC': '1370480141.000', 'FIRSTNAME': 'Jason',
'LASTNAME': 'Jone', 'REGION': 'UTAH', 'ACCESS_TYPE': 'Access Granted',
'PERSONNELID': 'salalm', 'QID': '231412',
'READER_NAME': 'CAZ.1 LOBBY LEFT TURNSTYLE OUT'}

正如@abarnert 指出的那样,如果需要,您可以保留更多信息:

>>> dict(k.partition('=')[::2] for k in split)
{'2013-06-05T11:01:02.955': '', 'EVENT_TIME_UTC': '1370480141.000', 'FIRSTNAME': 'Jason', 'LASTNAME': 'Jone', 'REGION': 'UTAH', 'ACCESS_TYPE': 'Access Granted', 'PERSONNELID': 'salalm', 'QID': '231412', 'READER_NAME': 'CAZ.1 LOBBY LEFT TURNSTYLE OUT'}

等等。关键点,正如他所说的那样,是你所展示的语法看起来很像最小的 shell 语法。 OTOH,如果违反了您在其他地方显示的模式,您可能想要回退到编写自定义解析器。 shlex 方法在应用时很方便,但并不像您想要的那样健壮。

关于python - 如何将字符串与未形成的字符串分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16947064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com