Python-如何将零添加到-1和1之间的浮点数

Python-如何将零添加到-1和1之间的浮点数,python,python-3.x,parsing,pyparsing,Python,Python 3.x,Parsing,Pyparsing,所以我在做一个假设,但我不理解以点开头的数字。这意味着解析器可以理解“0.5”,但不能理解“.5”: 评估(“0.5”) 0.5 >>>评估(“.5”) 以下是::)以下以下以下::::::()向前:::::::)向前::::::::)以下以下:::::::::::)向前:::::::::::::::::::)以下:::::))))))))))))))))))))))警察警察(PI:::\\\’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’))上述上述上

所以我在做一个假设,但我不理解以点开头的数字。这意味着解析器可以理解
“0.5”
,但不能理解
“.5”

评估(“0.5”) 0.5 >>>评估(“.5”) 以下是::)以下以下以下::::::()向前:::::::)向前::::::::)以下以下:::::::::::)向前:::::::::::::::::::)以下:::::))))))))))))))))))))))警察警察(PI:::\\\’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’))上述上述上述上述上述上述上述上述上述上述上述上述上述:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::行:1,列:1) 因此,我的目标是用
“0”替换没有整数部分的十进制数。
,然后是小数(例如,用
“0.5”
替换
“-2”
替换
”-0.2”
“0.0”
替换
“0.0”
,等等),以便解析器能够理解它。因此,我提出了以下代码:

expression=“-.2”
表达式=列表(表达式)
对于键,枚举(表达式)中的字符:
#如果字符串中的第一个字符是一个点,如果该点后面有一个数字,则在其前面添加“0”
如果不是关键点:
如果char==”:
尝试:
如果表达式[key+1].isdigit():
表达式。插入(键“0”)
除了:通过
持续
#如果一个点不是字符串中的第一个字符,如果该点之前没有数字,但该点之后有一个数字,则在该点之前添加“0”
如果char==”,而不是表达式[key-1]。isdigit():
尝试:
如果表达式[key+1].isdigit():
表达式。插入(键“0”)
除了:继续
expression=“”.join(表达式)
打印(表达式)#结果为“-0.2”

这个代码有效,但是这是最好的方法吗?

否。如果您的语言允许格式为
.5
-.7
的数字文本,那么您的解析器应该更改为接受此类文本。

否。如果您的语言允许格式为
.5
-.7
的数字文本,那么您的解析器应该更改为接受此类文本文字:

你在解析器中考虑了一些<代码>正则表达式> /代码>吗?您可以进行适当的检查,例如

expression = "-.0"
expression = float(expression)
expression = str(expression)
print(expression)
重新导入
12月9日='。'
dec_模式='[+-]?[0-9]+['+dec_sep+'][0-9]*.[+-]?[0-9]*['+dec_sep+'][0-9]+'
对于['.7','-.4',4','+3']中的s:
打印(关于完全匹配(dec_图案)
得到



<代码> > P>在解析器中考虑了一些<代码>正则表达式> /代码>吗?您可以进行适当的检查,例如

重新导入
12月9日='。'
dec_模式='[+-]?[0-9]+['+dec_sep+'][0-9]*.[+-]?[0-9]*['+dec_sep+'][0-9]+'
对于['.7','-.4',4','+3']中的s:
打印(关于完全匹配(dec_图案)
得到




@TheOneMusic这是一个完全不同的问题,应该作为一个新问题发布。很抱歉,我不熟悉pyparsing框架。显然,
fnumber
解析操作不接受以小数点开头的数字,但我不知道该在哪里更改。或者你用这90分钟来寻找解决方案:-)实现结果有时很难,尤其是当你自己做这项工作时;-)@音乐太完美了!如果所有内容都是可选的,那么此表达式也将匹配“”,这可能会导致解析器出现其他问题。pyparsing的新版本2.4.2(目前为2.4.2a1预发行版)包含一个
pyparsing\u common.fnumber
表达式,该表达式接受不带前导数字的浮点数。@音乐这是一个完全不同的问题,应该作为新问题发布。很抱歉,我不熟悉pyparsing框架。显然,
fnumber
解析操作不接受以小数点开头的数字,但我不知道该在哪里更改。或者你用这90分钟来寻找解决方案:-)实现结果有时很难,尤其是当你自己做这项工作时;-)@音乐太完美了!如果所有内容都是可选的,那么此表达式也将匹配“”,这可能会导致解析器出现其他问题。pyparsing的新版本2.4.2(目前作为2.4.2a1预发布)包含一个
pyparsing\u common.fnumber
表达式,该表达式接受不带前导数字的浮点数。@此要求在原始表达式中没有反映出来question@TheOneMusic这个要求并没有反映在你最初的问题中。杰普:有时候最好避免“我有个问题->我需要正则表达式->哦。。。现在我有两个问题!“情况;-)Pyparsing包括用于这类事情的Regex类。提供的
Pyparsing_common.fnumber
是使用Regex定义的,因为使用单个Regex表达式比使用多个小表达式组合有很大的性能提升。Pyparsing还为大多数终端表达式创建内部正则表达式。
ppyparsing_common
在pyparsing中的定义与任何其他名称一样。
将pyparsing导入为pp;ppc=pp.pyparsing_common
是一种方法。然后您可以访问
ppc.fnumber
ppc.integer
,等等。jep有时最好避免“我有问题->我需要正则表达式->哦…”。。。现在我有两个问题!“情况;-)Pyparsing包括用于这类事情的Regex类。提供的
Pyparsing_common.fnumber
是使用Regex定义的,因为使用单个Regex表达式比使用多个小表达式组合有很大的性能提升。Pyparsing还为大多数终端表达式创建内部正则表达式。
ppyparsing_common
与任何其他名称一样在pyparsing中定义。
将pyparsing导入为pp;ppc=pp.pyparsing_common
是一种方法。然后您可以访问
ppc.fnumber
ppc.integer
等。