我有一个连接到数据库的现有应用程序.它在Python 2.7下运行.
应用程序在使用None和""填充没有值的变量的方式上不一致.我想使这一点保持一致,并尝试以某种方式更新代码.
作为一个数据库人思考,我认为None与Null一样,并且会认为这是空变量的正确选择但是当应用程序执行类似的操作时这会导致问题
if variable.upper() == "X":
#Do something
Run Code Online (Sandbox Code Playgroud)
如果变量为None类型,则会引发错误.
我可以
if variable is not None and variable.upper() == "X":
#Do something
Run Code Online (Sandbox Code Playgroud)
但这似乎不必要地冗长.
是否应该如何处理这个问题的最佳做法?
我有一个遗留的文件格式,我正在转换为XML进行处理.结构可概括为:
<A>
<A01>X</A01>
<A02>Y</A02>
<A03>Z</A03>
</A>
Run Code Online (Sandbox Code Playgroud)
标签的数字部分可以从01到99,并且可能存在间隙.作为处理的一部分,某些记录可能添加了其他标记.处理完成后,我通过追踪树将文件转换回传统格式.文件相当大(约150,000个节点).
这样做的一个问题是,某些使用传统格式的软件假定标签(或转换时的字段)将按字母数字顺序排列,但默认情况下,新标签将添加到分支的末尾,然后分支的末尾导致它们以错误的顺序从迭代器中出来.
我可以使用XPath来查找,每次我来添加一个新的标签基于标签的名字前述兄弟,但我的问题是,是否有一个简单的树排序一次只是在出口前路?
编辑:
我想我总结了结构.
记录可以包含如上所述的几个级别,以提供如下内容:
<X>
<X01>1</X01>
<X02>2</X02>
<X03>3</X03>
<A>
<A01>X</A01>
<A02>Y</A02>
<A03>Z</A03>
</A>
<B>
<B01>Z</B02>
<B02>X</B02>
<B03>C</B03>
</B>
</X>
Run Code Online (Sandbox Code Playgroud)