【问题标题】:Python search string for two numbers, assign to variablesPython搜索两个数字的字符串,分配给变量
【发布时间】:2018-02-02 04:49:17
【问题描述】:

我将以下字符串作为文件的一部分,其中包含相同格式的行。

CONST robtarget robttarget1:=[[-42277.480909368,-4997.36320197,2332.380745999],[0.347787091,-0.799426288,0.217080241,0.439133144],[0,0,0,0],[-35700.0,180.0,2200.000095367,0,9E9,9E9]];

我需要访问两个特定的数字并对它们进行数学运算。 -35700.0 和 180.0。

我正在努力获取这些特定值并将它们分配给变量。

【问题讨论】:

  • 到目前为止,只需打开文件,遍历每一行并打印出来。
  • 我正在尝试删除第一个文本,然后我可以访问列表列表。

标签: python


【解决方案1】:

只要去掉不是值的那部分行,使用eval将其余部分作为python变量获取。

以下行将使用 split 在“=”字符处断开您的字符串(因此您将获得 2 个字符串)。 然后它会得到你的字符串的第二部分(在'='之后开始的那个),删除最后的';'字符并使用eval 来解释整个事情:

result = eval(s.split('=')[1][:-1])

现在您将获得一个列表列表,您可以轻松地从中提取号码

【讨论】:

  • 使用ast.literal_eval 会更安全,它可以防止恶意字符串被评估。
【解决方案2】:

你可以通过“=”分割字符串,然后使用ast模块将字符串列表转换为python列表对象,并使用列表索引来获取所需的值

前:

import ast
A = "CONST robtarget robttarget1:=[[-42277.480909368,-4997.36320197,2332.380745999],[0.347787091,-0.799426288,0.217080241,0.439133144],[0,0,0,0],[-35700.0,180.0,2200.000095367,0,9E9,9E9]];"
A = A.split("=")[1].replace(";", "")   #Remove any non python string.
A = ast.literal_eval(A)    #Convert string object to list object
print A[-1][0:2]           # I have used slice to fetch the required value

输出:

[-35700.0, 180.0]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 2013-11-13
    • 2011-01-20
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多