我正在阅读一百多万个文件来删除一些数据。这些文件通常非常统一,但偶尔会出现我预期找不到的问题。
例如,我希望一些sgml代码能够识别我需要的值
for data_line in temp #temp is a list of lines from a file
if <VARIABLENAME> in data_line:
VARIABLE_VAL=data_line.split('>')[-1]
稍后我使用VARIABLE_VAL
。
但我有时会得到一个例外:文件中没有
<VARIABLENAME>theName
为了解决这个问题,我在处理完所有行后添加了这一行:
try:
if VARIABLE_VAL:
pass
except NameError:
VARIABLE_VAL=somethingELSE
我已经在某个地方看到了(但我找不到了)一个看起来像
的解决方案if not VARIABLE_VAL:
VARIABLE_VAL=somethingELSE
任何帮助将不胜感激
答案 0 :(得分:7)
在循环之前将变量初始化为默认值:
VARIABLE_VAL = somethingELSE
for dataline in temp: ...
这样,VARIABLE_VAL
将保留其初始默认值,除非绑定到循环中的其他内容,并且您无需进行任何奇怪的测试以确保这一点。
答案 1 :(得分:2)
Alex的解决方案是正确的。但是,如果您确实想要测试变量是否存在,请尝试:
if 'VARIABLE_VAL' in locals():
....