<p>另一种稍有不同的方法是按“word”解析“word”行,然后边打印边打印。您当前使用一个正则表达式一次性解析整行。相反,请使用<a href="https://docs.python.org/3/library/re.html#re.split" rel="nofollow noreferrer">^{<cd1>}</a>将该行拆分为其所有标记,然后分析每个标记:</p>
<pre class="lang-py prettyprint-override"><code>import re
s = """a273 = 4 + 1337
variable = 50.123132123 + 3.123123132 / 23.121212"""
separators = []
constants = []
operators = []
identifiers = []
for line in s.splitlines():
for token in re.split(r"(\s+)", line):
if re.match(r"\s+$", token):
separators.append(token)
kind = "separator"
elif re.match(r"\d+(.\d+)?$", token):
constants.append(token)
kind = "constant"
elif re.match(r"[a-z]+([0-9]+)?$", token):
identifiers.append(token)
kind = "identifier"
elif re.match(r"[=+/*-]$", token):
operators.append(token)
kind = "operator"
else:
kind = None
print(f"({token}, {kind})")
</code></pre>
<p>这将打印:</p>
<pre class="lang-none prettyprint-override"><code>('a273', identifier)
(' ', separator)
('=', operator)
(' ', separator)
('4', constant)
(' ', separator)
('+', operator)
(' ', separator)
('1337', constant)
('variable', identifier)
(' ', separator)
('=', operator)
(' ', separator)
('50.123132123', constant)
(' ', separator)
('+', operator)
(' ', separator)
('3.123123132', constant)
(' ', separator)
('/', operator)
(' ', separator)
('23.121212', constant)
</code></pre>
<p>在跑步结束时,您还将填写列表。例如:</p>
<pre><code>>>> print(constants)
['4', '1337', '50.123132123', '3.123123132', '23.121212']
</code></pre>