什么是在CSV文件中存储和检索布尔值的便捷方式
如果我使用CSV模块存储一个布尔值,它将被str()函数转换为字符串'True'或'False'。 但是,当我加载这些值时,一串'False'的计算结果为True,因为它是非空字符串。
我可以通过在阅读时用'IF'语句检查字符串'manualy'来查看字符串是什么,但它有点不够优雅。 任何更好的想法,或者这只是编程世界中的那些东西之一?
我不认为Python的csv
模块是可行的。 然而...
通过说您既可以使用Python编写和读取CSV文件,也可以使用CSV文件进行某种数据序列化。 你为什么想这么做? 对于序列化Python数据有很多更好的选择,并且CSV文件应该保留用于与出于某种原因需要它们的其他工具进行交互的IMHO。
使用int()函数将布尔值转换为它们的int值,然后存储这些值。 这是说,以上eli-bendersky的评论值得注意。
我不确定是否回答自己的问题是不好的形式,但这是我提出的解决方案。 它基本上包括把我讨论的那个令人讨厌的IF语句放到一个函数中。
def setyesNo(value):
if value: return 'Yes'
else: return 'No'
def checkYesNo(text):
if text == 'Yes': return True
else: return False
然后在我的dictWriter做这个。
for item in mylist:
writer.writerow( {'Is Cool' : setYesNo(item.is_cool),
.....
})
并在dictReader中。
for line in reader:
item MyObject(is_Cool=checkYesNo(line['Is Cool']),
.....
)
mylist.append(item)
链接地址: http://www.djcxy.com/p/47839.html
上一篇: What is a convenient way to store and retrieve boolean values in a CSV file