我在解析等式中的数字。从我的代码来看,没有什么问题。 它无法从公式中识别数字1,因为通常在公式中,数字1被跳过。你知道吗
def equationSystem(e):
a = []
for s in e:
a.append(re.findall("[-]?\d+[\.]?\d*[eE]?[-+]?\d*", s))
print a[0]
示例
equation = ["-x+y+z=0", "x-3y-2z=5", "5x+y+4z=3"]
预期产量
[[-1, 1, 1, 0], [1, -1, -2, 5], [5, 1, 4, 3]]
但实际产出是
[[0], [-2, 5], [5,1,4,3]]
你能帮我改进正则表达式吗?你知道吗
这应该很管用:
在这里,模式
pat
将有助于用1
替换所有非数字前面的字符,例如:-x+y+z=0
变成-1+1+1=0
,5x+y+4z=3
变成5x+1+4z=3
这将提供:
相反,假设您寻找已知的常量“xyz=”作为分隔符,并将它们之间的所有内容作为正则表达式组。你知道吗
输出为
然后你只需要担心把这些字符串转换成一个数字。对于前三个,你知道它们不能为零,所以它们可能有不同的转换函数,但这不是必须的。重要的是,如果在字符串中找不到任何数字,则返回+/-1。你知道吗
既然你想处理浮点数和电子符号,你需要做一点更多的去除空白,但我将留给你。例如,如果您有公式“0.5x-36E-4y+z=0”,那么在y之前的-和36之间的空格将抛出一个简单的浮点(s)转换。但是如果你把这个空间去掉,你可以这样做:
并用[parse_equation(s)中x的default_to_one(x)]获得系数,从而得到您给出的三种情况的输出,再加上一个额外的情况“0.5x-36E-4y+z=0”,以根据您的原始regexp演示如何处理您想要的所有类型。你知道吗
相关问题 更多 >
编程相关推荐