我有如下字符串,我想解析这个字符串,并将字符串中的=
之后的值作为逗号分隔值。
string = "TimeStamp=[2017-03-07 00:22:12.697Z] RequestUri=https://google.com SessionId={null} UserId=8273527 VisitorId= UserAgent=\"Abc Proxy\" SystemType=Connect ClientIp=140.11.135.123 IsTestSystem=False"
预期产出:
'[2017-03-07 00:22:12.697Z]','https://google.com','{null}','8273527','','Abc Proxy','Connect','140.11.135.123','False'
感谢任何帮助。
答案 0 :(得分:0)
我建议您尝试使用str.split
方法:
s = "TimeStamp=[2017-03-07 00:22:12.697Z] RequestUri=https://google.com SessionId={null} UserId=8273527 VisitorId= UserAgent=\"Abc Proxy\" SystemType=Connect ClientIp=140.11.135.123 IsTestSystem=False"
print [i.split("=")[-1] for i in s.split()]
输出:
['[2017-03-07', '00:22:12.697Z]', 'https://google.com', '{null}', '8273527', '', '"Abc', 'Proxy"', 'Connect', '140.11.135.123', 'False']
也许时间戳不是你想要的,所以试试这个:
first_split = s.split("]", 1)
print ["["+first_split[0].split("[")[-1]+"]"] + [i.split("=")[-1] for i in first_split[1].split()]
输出:
['[2017-03-07 00:22:12.697Z]', 'https://google.com', '{null}', '8273527', '', '"Abc', 'Proxy"', 'Connect', '140.11.135.123', 'False']
答案 1 :(得分:0)
您的数据格式不正确,某些值中包含空格,并且您有一些没有值的数据。因此,在纯python中它不会很容易,所以我使用re
代替:
>>> import re
>>> re.split(r'\w+\=', string)
['', '[2017-03-07 00:22:12.697Z] ', 'https://google.com ', '{null} ', '8273527 ', ' ', '"Abc Proxy" ', 'Connect ', '140.11.135.123 ', 'False']
您可以使用列表解析添加对空字符串的检查:
>>> [x.strip() for x in re.split(r'\w+\=', string) if x.strip()]
['[2017-03-07 00:22:12.697Z]', 'https://google.com', '{null}', '8273527', '"Abc Proxy"', 'Connect', '140.11.135.123', 'False']
答案 2 :(得分:0)
纯Python方式。它有一个限制,它假设密钥不包含空格(使用正则表达式的答案也有这个限制)。
0 or 1