小编Soh*_*a82的帖子

在 Python 中使用 shlex 进行词法分析时如何处理多字符运算符?

我正在编写一个语言解析器/解释器,我想我可以使用 shlex 模块来生成标记,但是在使用多字符运算符(例如+=or )时遇到了问题**。shlex 模块会将它们作为两个单独的运算符进行词法分析,这并不理想。

>>> t = shlex.shlex('x += 3')
>>> t.get_token()
'x'
>>> t.get_token()
'+'
>>> t.get_token()
'='
Run Code Online (Sandbox Code Playgroud)

我想我会尝试向 shlex.wordchars 添加操作符字符,但这会导致没有空格的代码出现问题:

>>> t = shlex.shlex('x+=3')
>>> t.wordchars += '+=*-/'
>>> t.get_token()
'x+=3'
Run Code Online (Sandbox Code Playgroud)

于是我有了一个想法,当我连续有多个可能是有效运算符的令牌时,我可以从令牌中手动重建运算符。例如,如果我有一个+后跟a 的标记=,那么我会将它们连接起来形成一个 '+='。然而,这个解决方案会产生一个问题,比如x - -3. 它会被标记为x, --, 和3,这也不是我想要的。

有什么办法可以简单地用 shlex 模块做我想做的事吗?或者我可能必须自己编写一个标记器?

python token lexer shlex

5
推荐指数
0
解决办法
240
查看次数

使用matplotlib的多个并排直方图?

我有一个软件必须处理大量不同的数据,并且可能需要不同的时间来处理它.随着软件的修改,处理数据所需的时间也会发生变化,因此我想创建一个显示时间差异和异常值的图表,因为理想情况下,这个程序每个部分需要大约相同的时间数据(这听起来很奇怪,不切实际,我知道,但在这里和我一起滚动).

起初,我想过使用箱形图,但我认为它们是不合适的,因为完全有可能将一半数据集悬停在一个值附近,另一半围绕另一个徘徊,我感觉不到箱形图会很好地说明这一点.所以我决定尝试使用直方图,但我无法弄清楚如何让matplotlib以我想要的方式绘制它.我想要一个单独的数字,X轴标有软件版本,Y轴显示处理数据集所花费的时间,有多个直方图,就像我做的这个模型:

在此输入图像描述

该图表显示在0.1版本中,大多数数据集在2-4秒内处理,由于某种原因需要12秒才能处理一组数据集.v0.1a摆脱了那些长的异常值,但一切都花了更长的时间.0.1b比0.1a略快.最后,0.2显示了很大的速度提升,但又引入了异常值.

我怎样才能让matplotlib创建这样的情节?

python matplotlib

3
推荐指数
1
解决办法
1060
查看次数

标签 统计

python ×2

lexer ×1

matplotlib ×1

shlex ×1

token ×1