gpt4 book ai didi

python - 如何使用一个空格字符串清理 CSV 输入?

转载 作者:行者123 更新时间:2023-11-28 19:17:00 25 4
gpt4 key购买 nike

情况是这样的:

  • 我正在阅读 CSV 文件,其中大部分时间,空单元格只是空字符串。出于某种原因,同一组中的一些文件在“空单元格”中有一个空格字符串,而不是空字符串。

  • 我正在使用 csv 的 DictReader 从这些文件中读取(以 ',' 作为分隔符),它会自动将空字符串转换为 None 在我将它们插入 PostgreSQL 数据库之前键入值。

  • 我尝试注册一个设置 skipinitialspace=True 的 Dialect 对象,但现在它们仍然是空字符串,与 None 不同,它仍然是 SQL 的无效输入我已设置为整数值的表列(因此我猜测 DictReader 在删除前导空格之前将空字符串转换为 None)。

我该如何解决这个问题?

免责声明:在我读取值并从 DictReader 获取行的字典后,我可以通过将所有单空格字符串转换为 None 类型来找到解决方案,但它看起来笨重且如果可能的话,我更喜欢更优雅的解决方案。

示例普通 csv

foo_id,foo_text,foo_value
1,'hello',4
3,,2

示例问题 csv

bar_id,bar_text,bar_value
1,'hello',4
3, ,2

示例 csv 读取脚本

with open('foo.txt') as csv_file:
csv.register_dialect('example_dialect', delimiter=',', skipinitialspace=True)
gtfsreader = DictReader(csv_file, dialect='example_dialect')
for row in gtfsreader:
print(row)

最佳答案

从来没有想出一种方法来处理配置 DictReader 来为我做这件事,但与此同时,我确实只是用这个辅助函数手动清理每一行:

def __sanitize__(row):
for key, value in row.items():
if value in ('', ' '):
row[key] = None
return row

还是希望有人能给出更性感的答案!

关于python - 如何使用一个空格字符串清理 CSV 输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32489686/

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