【发布时间】:2020-03-15 05:37:36
【问题描述】:
给定这个字符串:
fsw="M525x617M525x617S16d48492x577S10000505x544S22a00506x524S21300487x601S37601511x574S34500482x483
我想转换
fsw[8:] (thus "M525x617S16d48492x577S10000505x544S22a00506x524S21300487x601S37601511x574S34500482x483")
在包含以下内容的字典中:
{'S16d48':'492x577', 'S10000':'505x544', 'S22a00':'506x524', 'S21300':'487x601', 'S37601':'511x574', 'S34500':'482x483'}
我设法用正则表达式得到以下信息:
>>> import re
>>> re.findall("S[123][0-9a-f]{2}[0-5][0-9a-f]",fsw[8:])
['S16d48', 'S10000', 'S22a00', 'S21300', 'S37601', 'S34500']
>>> re.findall("S[123][0-9a-f]{2}[0-5][0-9a-f].......",fsw[8:])
['S16d48492x577', 'S10000505x544', 'S22a00506x524', 'S21300487x601', 'S37601511x574', 'S34500482x483']
但就字典而言......我没有进一步了解。
另一个问题:在 Python 字典中它是一个整体 必须是唯一的键值对(比如“S16d48”:“492x577”)吗?
提前 - 非常感谢。 问候。
【问题讨论】:
-
键和值是固定长度的吗?
-
是的,您总能在 fsw[8:] 中找到模式为 S[123][0-9a-f]{2}[0-5][0-9a-f] 的前 6 个字符然后是 7 个字符,例如 YYYxZZZ,其中 YYY 和 ZZZ 是数字('x' 总是在中间)。因此 13 个或更多字符,总是 13 的倍数。
-
如果它们是固定的,那么模式并不重要,不是吗?您不需要使用正则表达式,只需遍历这些拆分点即可。请参阅@ctenar 的回答。对于第二个问题,key 应该是唯一的,value 不一定是。
标签: python regex dictionary split