我有一个剧本。我通过数据库以字符串形式获取此脚本。我需要此脚本中的特定值。如何从字符串中获取这些数据?
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
每个脚本的值都在变化。
答案 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