通常,我们应该采用2 1 4格式的输入,分别将其分配给a,b,c。
a,b,c=map(int,input().split())
类似地,现在我们必须接受如下输入:2(1,4)
我被要求按以下顺序进行输入:分配给a = 2的值,后跟一个空格,其他两个输入b = 1和c = 4放在方括号内,并用逗号分隔。
我尝试过,代码就像:
import re
s=re.split(r' ''(|'',|','2 (1,4)',maxsplit=3)
答案 0 :(得分:0)
假设您所有的输入都是数字序列, 正则表达式可以是例如:
(?P<a>\d+) \((?P<b>\d+),(?P<c>\d+)\)
具有每个输入的命名捕获组。
有关工作示例,请参见:https://regex101.com/r/JvebjG/1
Python代码示例:
import re
p = re.compile(r'(?P<a>\d+) \((?P<b>\d+),(?P<c>\d+)\)')
m = p.search('22 (12,45)')
a, b, c = map(int, (m.group('a'), m.group('b'), m.group('c')))
print('a: {}, b: {}, c: {}'.format(a, b, c))
结果是:
a: 22, b: 12, c: 45
或者,如果您更喜欢split
:
拆分模式可以是:[() ,]+
,即打开或关闭
括号,空格和逗号(实际上是它们的非空序列)。
但是请注意,在这种情况下,最后的“)”也是一个“剪切”字符, 因此它后面的空字符串是拆分的第四结果。
因此以下代码中的s
列表具有四个元素,应避免
拆包时出现执行错误,您应该只拆解首字母3
元素。
import re
src = '22 (12,45)'
s = re.split(r'[() ,]+', src, maxsplit=3)
print(s)
a, b, c = map(int, s[0:3])
print('a: {}, b: {}, c: {}'.format(a, b, c))
打印结果与上面相同。