首页 > 解决方案 > 正则表达式从字符串中拆分正/负浮点/整数

问题描述

如何调整以下代码以返回此示例中的单词和数字?

下面的正则表达式很好地提取了正负整数/浮点数,但我也想保留单词 ('abc')。

numeric_const_pattern = '[-+]? (?: (?: \d* \. \d+ ) | (?: \d+ \.? ) )(?: [Ee] [+-]? \d+ ) ?'
rx = re.compile(numeric_const_pattern, re.VERBOSE)
rx.findall("-1 abc -1m abc -2.0 abc -2.0m abc 1 abc 1m abc 2.0 abc 2.0m abc")

谢谢

伊恩

标签: pythonregex

解决方案


如果要保留所有abc字符串,并且要对数字字符串进行的唯一更改是删除m,似乎将问题重新定义为“m从每个单词的末尾删除”会更容易:

>>> [x[:-1] if x.endswith("m") else x
... for x in
... "-1 abc -1m abc -2.0 abc -2.0m abc 1 abc 1m abc 2.0 abc 2.0m abc".split()
... ]
['-1', 'abc', '-1', 'abc', '-2.0', 'abc', '-2.0', 'abc', '1', 'abc', '1', 'abc', '2.0', 'abc', '2.0', 'abc']

推荐阅读