首页 > 解决方案 > 将带有运算符且没有空格的字符串转换为python中的列表

问题描述

我在下面有这个字符串。它没有空格。

"3.2+.4*5.67/6.145="

我希望有空间并保持花车完好无损。我还想迭代它以将元素添加到字符串或堆栈(最终目标是转换为后缀)。所以,我认为这是我需要的输出:

[3.2, +, .4, *, 5.67, /, 6.145, =]

关于如何做到这一点的任何想法?

后缀输出最终应该是这样的:

"3.2 .4 5.67 * 6.145 / +"

标签: pythonstringstackpostfix-mta

解决方案


re.split()保留捕获组(括号中的内容):

import re
s = "3.2+.4*5.67/6.145="
[x for x in re.split("(\d*\.?\d*)", s) if x != '']

编辑:关于 OP 的更多信息。"(\d*\.?\d*)"部分在说

  • \d:匹配任何整数(\d表示正则表达式中的整数)
  • *匹配我面前的零个或多个
  • \.匹配文字句点(因为在正则表达式中.表示任何字符)
  • ?匹配我面前的零或一件事
  • \d: 匹配任意整数
  • *匹配我面前的零个或多个

用括号括起来是诀窍。意思是捕获匹配的子字符串然后保留它们。通常,.split()摆脱匹配的分隔符。


推荐阅读