2024-06-16 13:31:10 发布
网友
我有这样一个清单:
[item1(130.35),item2(140.10),item2(140.25),item2(130.05)]
我想通过检查每个项目编号的前几位,将其替换为与另一个列表不同的项目。 例如,所有130个replaceditem1,所有140个replaceditem2:
[replaceditem1,replaceditem2,replaceditem2,replaceditem1]
其目的是:
item\d+\((\d+)\.\d+\)
演示:
>>> l = ["item1(130.35)", "item2(140.10)", "item2(140.25)", "item2(130.05)"] >>> import re >>> pattern = re.compile(r"item\d+\((\d+)\.\d+\)") >>> replacements = { ... '130': 'replaceditem1', ... '140': 'replaceditem2' ... } >>> result = [] >>> for item in l: ... match = pattern.match(item) ... if match: ... result.append(replacements.get(match.group(1), item)) ... else: ... result.append(item) >>> result ['replaceditem1', 'replaceditem2', 'replaceditem2', 'replaceditem1']
让我们看一下正则表达式:
\d+
\(
\)
\.
(\d+)
其目的是:
item\d+\((\d+)\.\d+\)
将适用于这组输入演示:
让我们看一下正则表达式:
\d+
匹配一个或多个连续数字\(
和\)
将匹配字面上的开括号和闭括号-需要转义,因为它们有特殊的含义\.
将匹配文字点(\d+)
是捕获一个或多个连续数字的捕获组相关问题 更多 >
编程相关推荐