gpt4 book ai didi

python - 在 CSV 文件中存储和检索 bool 值的便捷方法是什么

转载 作者:太空狗 更新时间:2023-10-29 21:53:43 25 4
gpt4 key购买 nike

如果我使用 CSV 模块存储一个 bool 值,它会被 str() 函数转换为字符串 TrueFalse .但是,当我加载这些值时,False 字符串的计算结果为 True,因为它是一个非空字符串。

我可以通过在读取时使用 IF 语句手动检查字符串来查看字符串是什么来解决这个问题,但它有点不够优雅。有没有更好的想法,或者这只是编程世界中的其中一件事?

最佳答案

在 CSV 文件中存储 bool 值的方法

  • 字符串:两个常见的选择是truefalseTrueFalse,但我也看到yesno
  • 整数:01
  • float :0.01.0

让我们比较一下各自的优点/缺点:

  • 字符串:
    • + 人类可以阅读
    • - CSV 阅读器将把它作为一个字符串,当 bool 应用于它时,两者都将计算为“true”
  • 整数:
    • + CSV 阅读器可能会看到此列是整数并且 bool(0) 的计算结果为 false。
    • + 更节省空间
    • - 不太清楚是boolean
  • 花车:
    • + CSV 读者可能会看到此列是整数,bool(0.0) 的计算结果为 false。
    • - 不太清楚是boolean
    • + 可能为空(如 NaN)

Pandas CSV 阅读器显示所描述的行为。

将 bool 字符串转换为 bool 值

看看mpu.string.str2bool :

>>> str2bool('True')
True
>>> str2bool('1')
True
>>> str2bool('0')
False

它有以下实现:

def str2bool(string_, default='raise'):
"""
Convert a string to a bool.

Parameters
----------
string_ : str
default : {'raise', False}
Default behaviour if none of the "true" strings is detected.

Returns
-------
boolean : bool

Examples
--------
>>> str2bool('True')
True
>>> str2bool('1')
True
>>> str2bool('0')
False
"""
true = ['true', 't', '1', 'y', 'yes', 'enabled', 'enable', 'on']
false = ['false', 'f', '0', 'n', 'no', 'disabled', 'disable', 'off']
if string_.lower() in true:
return True
elif string_.lower() in false or (not default):
return False
else:
raise ValueError('The value \'{}\' cannot be mapped to boolean.'
.format(string_))

关于python - 在 CSV 文件中存储和检索 bool 值的便捷方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3717785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com