我是python的新手,我正在尝试使用它(Python 2.7.14)从文本文件中提取信息。
当我将部分文本文件复制为字符串并运行搜索时,如下所示:
import re
data = """ATTRIBUTE_INSTANCE NAME="R_MIX_HIHI_LIM"
{
VALUE { CV=0 }
}
ATTRIBUTE_INSTANCE NAME="R_MIX_LOLO_LIM"
{
VALUE { CV=0 }
}
ATTRIBUTE_INSTANCE NAME="R_MIX_SP"
{
VALUE { CV=0 }
}
ATTRIBUTE_INSTANCE NAME="R_VAC_HIHI_LIM"
{
VALUE { CV=0 }
}
ATTRIBUTE_INSTANCE NAME="R_VAC_LOLO_LIM"
{
VALUE { CV=0 }
}
ATTRIBUTE_INSTANCE NAME="R_VAC_SP"
{
VALUE { CV=0 }
}
ATTRIBUTE_INSTANCE NAME="L_RECIRC_TM"
{
VALUE { CV="" }
}
ATTRIBUTE_INSTANCE NAME="L_RECIRC_TM_SP"
{
VALUE { CV="" }
}"""
regex = re.compile(r"ATTRIBUTE_INSTANCE NAME\=\"([A-Za-z][_A-Za-z]+)")
result = regex.search(data)
for result in regex.findall(data):
print result
我得到了我想要的输出。当我尝试使用以下内容直接搜索文本文件时出现问题:
import re
f_open = open("file.txt", "r")
data = f_open.read()
regex = re.compile(r"ATTRIBUTE_INSTANCE NAME\=\"([A-Za-z][_A-Za-z]+)")
result = regex.search(data)
for result in regex.findall(data):
print result
f_open.close()
我的搜索命令不再输出任何内容。这是由于"开放"命令在所有字符之间添加空格。所以而不是:
ATTRIBUTE_INSTANCE NAME="R_PRS_CTRL_LM"
{
VALUE { CV=0 }
}
我得到了:
A T T R I B U T E _ I N S T A N C E N A M E = " R _ P R S _ C T R L _ L M "
{
V A L U E { C V = 0 }
}
有没有确保我的代码在不添加空格的情况下读取文本文件,从而破坏了我的搜索功能?
答案 0 :(得分:0)
我明白了。 DCS输出文件是二进制的。转换文件可以解决问题。