如何查找和获取字符串数据

时间:2018-11-30 10:23:29

标签: python python-3.x

我有一个剧本。我通过数据库以字符串形式获取此脚本。我需要此脚本中的特定值。如何从字符串中获取这些数据?

我从数据库中提取的数据(类型= str)

data = """if(description)
{
  script_name("name");
  script_summary("summary");
  script_version("version");
  script_tag(name:"base_vector", value:"AV:N/AC:L/Au:N/C:C/I:C/A:C");
  exit(0);
}"""

每个脚本我想要的数据

base_vector: AV:N/AC:L/Au:N/C:C/I:C/A:C

每个脚本的值都在变化。

2 个答案:

答案 0 :(得分:3)

为此考虑使用正则表达式

import re

rx = r'name\s*\:\s*\"(\w+)\"\s*\,\s*value\s*\:\s*\"(.*)\"'

text = """if(description)
{
  script_name("name");
  script_summary("summary");
  script_version("version");
  script_tag(name:"base_vector", value:"AV:N/AC:L/Au:N/C:C/I:C/A:C");
  exit(0);
}"""

m = re.search(rx, text)
print(m.group(1) + ': ' + m.group(2))

输出为:

base_vector: AV:N/AC:L/Au:N/C:C/I:C/A:C

您可以增强正则表达式,但前提是它可以处理您的输入数据。

请注意表达式中有许多\s*标记-它们允许在输入数据中使用空格。

答案 1 :(得分:0)

其中一半是剩下的

m = re.search('(?<=value:")..[A-Z|a-z|:|/]*', data)
print(m.group(0))
  

'AV:N / AC:L / Au:N / C:C / I:C / A:C'

在您生命中的某个时刻阅读整篇文档:https://docs.python.org/3/library/re.html