【发布时间】:2014-02-18 22:26:39
【问题描述】:
现在我有三个从 RE findall 函数生成的列表,我正在尝试从列表中的元组中删除一些空字符串。在这个过程中,数字也应该转换为整数:
得到:[('', '', '1', '1')]
预期:[(1, 1)]
得到:[('', '', '20', '500'), ('21', 'failed', '', '')]
预期:[(20, 500), (21, 'failed')]
得到:[('3', 'failed', '', ''), ('', '', '48', '23'), ('', '', '96', '0')]
预期:[(3, 'failed'), (48, 23), (96, 0)]
有什么想法吗?
【问题讨论】:
-
您使用的是哪个正则表达式?为什么不首先使用与空字符串不匹配的字符串,而不是之后将其过滤掉?
-
我尽力了...但我无法写出不同的正则表达式...
-
好吧,也许我们可以帮你解决这个问题?
-
mission_report('是,任务 3 失败。完成 48 次袭击:找到目标:23。完成任务 96,找到目标:0') 应该返回 [(3,'failed'), ( 48, 23), (96, 0)])。我为此写的正则表达式是: match=re.findall(r'(?:raid|mission) (\d+) (failed)|(\d+) (?:was )?accomplished.*?found: (\d+ )', s, re.IGNORECASE)
-
啊,好的,所以总会有两个空的反向引用。我知道了。好吧,让我们按照你的方式做吧……等一下。