什么是在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

下一篇: When should I use JSON serialization and why?