【问题标题】:Want to parse a string in list and use想要解析列表中的字符串并使用
【发布时间】:2019-12-08 08:13:26
【问题描述】:

我有一个字符串列表。我需要对其进行解析,然后将其用于进一步计算。我的

这是列表。

list=["3x+3y+2","1x-1y+0","1x+0y-3","0x+1y-0.5"]

我尝试解析列表以提取 x 和 y 的系数

for i in lines:
    re('x,+,y,',i)

我想输出为

[3,3,2],[1,-1,0]

等等。 这段代码给了我一个输出为

['3x+3y+2']
['1x-1y+0']
['1x+0y-3']
['0x+1y-0.5']

谁能帮我提示一下怎么做?

【问题讨论】:

  • 什么是regex?为什么您期望与它有不同的输出?
  • 如何工作regex() ?显示它的代码。
  • 也许可以看到SymPy 了解符号数学。
  • 抱歉打错了..不是正则表达式..它的re..我已经编辑了
  • 我试图用多个分隔符分割字符串

标签: python regex string list


【解决方案1】:

如果你只需要数字(带符号)

import re
[re.findall("\-{0,}\d{1,}",i)for i in lis]

【讨论】:

    【解决方案2】:

    这应该可行:

    import re
    lst = ["3x+3y+2","1x-1y+0","1x+0y-3","0x+1y-0.5"]
    nums_only = [re.findall(r'-?[0-9.]+', elem) for elem in lst]
    # [['3', '3', '2'], ['1', '-1', '0'], ['1', '0', '-3'], ['0', '1', '-0.5']]
    

    它只是使用re.findall() 来获取每个字符串中所有出现的非常简单的正则表达式r'-?[0-9.]+'。当然,任何连续的数字或小数位序列都至少有一个字符长,可以选择在前面加上一个减号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-19
      • 1970-01-01
      相关资源
      最近更新 更多