我正在构建一个程序,根据不同的条件将新值写入dbf,但我遇到的问题是python没有将文本值识别为if / else语句的一部分。
如果我的“col1”填充了真/假值,我想说:
my_table.add_fields('col2 N(2,0)')
for record in dbf.Process(my_table):
if record.col1 == 'true':
record.col2 = 1
else:
record.col2 = 2
如何让python将'true / false'识别为该语句的一部分?
答案 0 :(得分:1)
什么数据类型是col1
?基本dbf数据类型是Char
(文本),Date
(日期时间),Logical
(布尔值)Number
(整数/浮点数),Float
(整数/ float)和Memo
(无界文本)。
如果col1
不是Char字段,则与字符串比较将始终返回False。如果col1
是Char字段,那么只有当col1
激动'真'时才会比较相等 - 不是'真'或'真'或'真'。
如果问题是额外的空格(默认情况下我的模块返回整个字段,包括尾随空格),你可以这样做:
if record.col1.strip() == 'true':
或告诉dbf.Table
使用忽略尾随空格的自定义Char
类型:
my_table = dbf.Table('/path/to/file', default_data_types={'C':dbf.Char})