我有一个包含任意数量的对的字符串:
A = B,C = D,E = F.
这是一个选项字符串,所以我知道"A","C"和"E".如果我愿意,我可以查询它们.
我想在字符串中找到格式错误的对:
A=B, C, E=F # C has no equals or value
A=, C=D, E=F # A has no value
A=B, C=D, E=F X # what is X doing there!
Run Code Online (Sandbox Code Playgroud)
当然,A,C和E都是可选的,可以按任何顺序出现.
抓住所有对的优雅方法是什么,同时注意到错误情况?我现在能够使用re.findall(...),但我在上面的第三种情况下失败了.
这就是我所拥有的.在我的确切情况下,必须引用该对的右侧,但这对于这个问题并不重要.
re.findall('\s*(\w+)\s*=\s*(?P<Q>[\'\"])(\w*)(P=Q)\s*,{0,1}', a_string)
Run Code Online (Sandbox Code Playgroud)
如果我知道这a_string完全被消耗了,我会成为一个快乐的人.
拆分并打印不在图案中的字符串 A=B.
>>> def malformed(s):
return [i for i in s.split(', ') if not re.search(r'^[A-Z]+=[A-Z]+$', i)]
>>> print(malformed('A=, C=D, E=F'))
['A=']
>>> print(malformed('A=B, C=D, E=F X'))
['E=F X']
>>> print(malformed('A=B, C, E=F'))
['C']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |