我写了一个简单的代码来读取文本文件。这是一个片段:
linestring = open(wFile, 'r').read()
# Split on line Feeds
lines = linestring.split('\n')
num = len(lines)
print num
numHeaders = 18
proc = lines[0]
header = {}
for line in lines[1:18]:
keyVal = line.split('=')
header[keyVal[0]] = keyVal[1]
# note that the first member is {'Mode', '5'}
print header[keyVal[0]] # this prints the number '5' correctly
print header['Mode'] # this fails
最后一个print语句会产生运行时错误:
print header['Mode']
KeyError: 'Mode'
第一个打印语句print header[keyVal[0]]
工作正常,但第二个失败! keyVal[0]
是字符串文字'Mode'
为什么使用字符串'Mode'
会直接失败?
答案 0 :(得分:2)
split()
将在所有连续的空格上分开,所以
'foo bar'.split()
是['foo', 'bar']
。
但如果你给它一个参数,它就不再为你删除空格,所以
'foo = bar'.split('=')
是['foo ', ' bar']
。
您需要自己清理空白。一种方法是使用列表解析:
[s.strip() for s in orig_string.split('=')]
答案 1 :(得分:1)
keyVal = map(str.strip,line.split('=')) #this will remove extra whitespace
你有空白问题......