2024-10-03 11:20:47 发布
网友
my_string = "C2H6O" a = re.findall("((Cl|H|O|C|N)[0-9]*)", my_string) print(a)
输出是[("C2", "C"), ("H6", "H"), ("O", "O")],但我预期是["C2", "H6", "O"]。你知道吗
[("C2", "C"), ("H6", "H"), ("O", "O")]
["C2", "H6", "O"]
我对元组有点了解,但我觉得这段代码中没有什么会导致元组中的第二个元素("C2", "C")。你知道吗
("C2", "C")
可以将正则表达式更改为:
re.findall("([Cl|H|O|C|N][0-9]*)", my_string)
你会得到你所期望的。这将删除一些分组。你知道吗
因为您的模式包含捕获组。你知道吗
从^{}:
If one or more groups are present in the pattern, return a list of groups; this will be a list of tuples if the pattern has more than one group.
如果您想摆脱它们,请使用以下模式:
r"(?:Cl|H|O|C|N)[0-9]*"
它完全删除(不需要的)外部捕获组,并为alpha字符使用非捕获组。你知道吗
>>> re.findall(r"(?:Cl|H|O|C|N)[0-9]*", my_string) ['C2', 'H6', 'O']
可以将正则表达式更改为:
你会得到你所期望的。这将删除一些分组。你知道吗
因为您的模式包含捕获组。你知道吗
从^{} :
如果您想摆脱它们,请使用以下模式:
它完全删除(不需要的)外部捕获组,并为alpha字符使用非捕获组。你知道吗
相关问题 更多 >
编程相关推荐