在Python中解析

3 投票
4 回答
1153 浏览
提问于 2025-04-15 11:55

我有一个这样的字符串:

adId:4028cb901dd9720a011e1160afbc01a3;siteId:8a8ee4f720e6beb70120e6d8e08b0002;userId:5082a05c-015e-4266-9874-5dc6262da3e0

我只需要adId、siteId和userId的值。

也就是说:

4028cb901dd9720a011e1160afbc01a3

8a8ee4f720e6beb70120e6d8e08b0002

5082a05c-015e-4266-9874-5dc6262da3e0

我想把这三个值放在不同的变量里,或者放在一个数组中,这样我就可以使用这三个值了。

4 个回答

1
matches = re.findall("([a-z0-9A-Z_]+):([a-zA-Z0-9\-]+);", buf)

for m in matches:
    #m[1] is adid and things
    #m[2] is the long string.

你还可以用 {32} 来限制长度,比如这样

([a-zA-Z0-9]+){32};

正则表达式可以帮助你验证字符串,并把它拆分成不同的部分。

18

如果你不需要复杂的解析,可以把它们分割成一个字典:

In [2]: dict(kvpair.split(':') for kvpair in s.split(';'))
Out[2]:
{'adId': '4028cb901dd9720a011e1160afbc01a3',
 'siteId': '8a8ee4f720e6beb70120e6d8e08b0002',
 'userId': '5082a05c-015e-4266-9874-5dc6262da3e0'}
1

你可以这样做:

input='adId:4028cb901dd9720a011e1160afbc01a3;siteId:8a8ee4f720e6beb70120e6d8e08b0002;userId:5082a05c-015e-4266-9874-5dc6262da3e0'

result={}
for pair in input.split(';'):
    (key,value) = pair.split(':')
    result[key] = value

print result['adId']
print result['siteId']
print result['userId']

撰写回答