【问题标题】:Python 3.6+, change representation of None in filePython 3.6+,更改文件中 None 的表示
【发布时间】:2021-07-20 20:51:17
【问题描述】:

我必须从多个来源中提取并将结果保存到 csv 文件。当接收到的字段数据为None 时,我希望将其表示为空字符串。 (我意识到我将失去源中空字符串和 NULL 类型值之间的区别。)

我的基本要求是在纯分隔文件中保留字符串“None”和虚无之间的区别,而不使用引号。

我希望避免调用一个函数来检查我编写的每个可空字段的值是否为空,或者至少在代码中不明确调用......例如,我想只需编码f.write(row['LastName'],如果LastName 为“None”,则为“None”,但如果为NoneType,则为空字符串。

我还没有调查自带的 csv 库是否可以满足我的需求,我会这样做,这似乎是最简单的方法。

但是:有什么我可以覆盖的,所以如果我将None 写入文件,我会得到空字符串(或者输出文件中除了字符串“None”之外的其他内容?

在我看来,我必须更改 1)_io.TextIOWrapper 的内置写入方法或 2)NoneType__str__ 方法。

【问题讨论】:

  • 一旦我说open(filename, 'wt`) as f -- 是否可以将新方法附加到“f”,并调用该方法而不是write
  • csv.writer 自动将None 转换为空字符串。

标签: python csv serialization null nonetype


【解决方案1】:

if row['LastName'] is None 将检查您的值是否为NoneType

类似:

if row['LastName'] is None:
    f.write("")
else:
    f.write(row['LastName'])

会完成工作。

【讨论】:

  • 谢谢,我希望有一个不检查每个字段的解决方案(至少在代码的“表面”上)。我编辑了我的问题以强调这一点。
猜你喜欢
  • 1970-01-01
  • 2017-06-29
  • 1970-01-01
  • 2020-02-26
  • 1970-01-01
  • 2018-06-10
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多