我正在尝试读取输入文件并匹配包含“ToolVersionEdit”的行,然后根据“=”拆分并获取第二部分..我正在使用下面的...没有得到所需的输出..我哪里出错了?输入和预期的输出在下面给出
INPUT:
[BuildRequest]
BuildRequestVersion=4.4.21
BuildRequestType=Phone
BuildCommandComboBox=common/build/build.sh tz:A8064AAAAANAAT140029.1 tz_bid=AAAAANAA wcnss:A8064AAAAANAAW120072.1 wcnss_bid=SCAQBAF lpass:A8064AAAAANAZL140106.1 boot_9x15:M9615ACETRMAAB12171.1 boot_9x15_bid=ACEHRMAA rpm:A8064AAAAANAAR1100153.1 rpm_bid=AAAAANAAR modem_9x15:M9615ACEFWTAAM4010223.1 modem_9x15_bid=ACEFWTAA apps_9x15:M9615AFEHRMAA2745.1 apps_9x15_bid=AFEHRMAA rpm_9x15:M9615ACETRMAAR1100159.4 rpm_9x15_bid=AAAAANAAR boot:A8064AAAAANAAB12171.1 boot_bid=AAAAANAA lpass_9x15:M9615ACETRMAZL140105.3 apps:A8064AAAAANLGA2214074.1 dsps:A8064AAAAANAAS150007.1 dsps_bid=DSPSBLD
ToolVersionEdit=1.6.21
CheckSumCheckBox=0
PurposeEdit=
[BuildRequestComments]
LineCount=0
预期输出:-1.6.21
import re
import sys
file = "C:\Dropbox\Reference.brf"
lines = open(file ,'r').readlines()
for line in lines:
if 'ToolVersionEdit' in line:
line = line.strip('=')[1]
print line
答案 0 :(得分:3)
您的问题是您正在覆盖line
变量。您使用与循环变量相同的变量作为您尝试缓存的变量。此外,一旦找到了要查找的内容,就不需要继续循环。
我做的另一项更改是删除对readlines
的调用。您可以直接从文件对象迭代所有行。另外,使用变量(可能)覆盖file
模块的形式很糟糕,所以我也重命名了这个模块。
import re
import sys
filename = "C:\Dropbox\Reference.brf"
try:
input_file = open(filename ,'r')
except IOError as exc:
print exc
else:
cached_line = ""
for line in input_file:
if 'ToolVersionEdit' in line:
cached_line = line.split('=')[1]
break
print cached_line
答案 1 :(得分:2)
使用ConfigParser。构建你的文件是unix配置文件,ConfigParser(python3中的configparser)可以读取并解析它http://docs.python.org/2/library/configparser.html。
from ConfigParser import RawConfigParser as Parser
filename = 'yourfile.conf'
config = Parser()
config.read(filename)
print config.get('BuildRequest', 'ToolVersionEdit')
如果您愿意,可以通过此代码获取所有选项:
for section in config.sections():
for option, value in config.items(section):
print value
答案 2 :(得分:1)
您想使用split
代替strip
答案 3 :(得分:1)
实际上你需要两件事。
strip
更改为split
break
。结果代码如下所示,
7 for line in lines:
8 if 'ToolVersionEdit' in line:
9 line = line.split('=')[1]
10 break
答案 4 :(得分:1)
试试这个:
import re
import sys
file = "/tmp/abc.txt"
lines = open(file ,'r').readlines()
for line in lines:
if 'ToolVersionEdit' in line:
desired_line = line.split('=')[1]
print desired_line