用于以下字符串的简单正则表达式

2024-10-01 17:40:18 发布

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

我有一根绳子

rand_id%3A%3Ftmsid%3D1340496000_EP002960010145_11_0_10050_1_2_10036 

现在,我想做的是

extract timestamp: 134049600
        event: EP002960010145

现在isseue在tmsid之后有%3D 我甚至不知道那是什么。。但不管怎样,有时它是%3D%6D,我想它甚至可以是%16D???我不能肯定

是否有一种健壮的方法来处理上述字符串中的这两个字段?你知道吗

谢谢


Tags: 方法字符串eventextracttimestamp绳子randtmsid
1条回答
网友
1楼 · 发布于 2024-10-01 17:40:18

您正在查看URL引用的数据:

>>> from urllib2 import unquote
>>> unquote('rand_id%3A%3Ftmsid%3D1340496000_EP002960010145_11_0_10050_1_2_10036')
'rand_id:?tmsid=1340496000_EP002960010145_11_0_10050_1_2_10036'

您可以在第一个=上拆分,然后在_上拆分:

>>> unquoted = unquote('rand_id%3A%3Ftmsid%3D1340496000_EP002960010145_11_0_10050_1_2_10036')
>>> unquoted.split('=', 1)[1].split('_')
['1340496000', 'EP002960010145', '11', '0', '10050', '1', '2', '10036']
>>> timestamp, event = unquoted.split('=', 1)[1].split('_')[:2]
>>> timestamp, event
('1340496000', 'EP002960010145')

如果取而代之的是数据有多个字段,并且您在其中也找到了&,那么您也许可以更好地将问号后面的所有内容解析为URL查询字符串,而不是使用^{}

>>> from urlparse import parse_qs
>>> parse_qs(unquoted.split('?', 1)[1])
{'tmsid': ['1340496000_EP002960010145_11_0_10050_1_2_10036']}
>>> parsed = parse_qs(unquoted.split('?', 1)[1])
>>> timestamp, event = parsed['tmsid'][0].split('_', 2)[:2]
>>> timestamp, event
('1340496000', 'EP002960010145')

相关问题 更多 >

    热门问题