python - 将 "True" 和 "False" 转换为 Python 布尔值,但保持其他字符串不变
问题描述
我正在开发一个使用 Flask-SQLAlchemy 的应用程序,它需要以.csv
格式导入和导出数据。我有导出功能,但我在导入时遇到了障碍。
简而言之,我正在寻找一种通用方法来导入字符串“True”和“False”作为布尔值,但任何其他字符串值作为其本身。这样做的原因是csv.DictWriter
将布尔值呈现为其字符串等价物,我需要将生成的文件导入回数据库。
我试过ast.literal_eval()
了,但是如果我给它“True”或“False”以外的任何东西,它就会抛出一个ValueError。我可以测试列名,但当然,一旦我更改架构,它就会中断。我想用成语
reader = csv.DictReader(fh)
...
for row in reader:
...
contact = Contact.query.get(row['id'])
for key, value in row.items():
setattr(contact, key, value)
任何人都可以提出一种方法来实现我想要实现的目标吗?
解决方案
读取 CSV 时,遍历所有列并将字符串替换为相应的值。
csv_data = []
with open("file.csv") as f:
csv_f = csv.reader(f)
for row in csv_f:
for i, col in enumerate(row):
if col == "True":
row[i] = True
elif col == "False":
row[i] = False
csv_data.append(row)
推荐阅读
- c# - 证书验证 - GetCertHashString 与 GetPublicKeyString
- http - 如何将 CAFile 添加到我们的证书中
- android - WorkManager/PeriodicWorkRequest - 当 SO 阻止其中一个的执行时,下一个工作会发生什么?
- git - Git 快进合并与 git reset --hard 相同
- reactjs - 404同时用laravel刷新反应路线?
- r - 在 R 中使用 fread 导入不完整的大型 CSV
- django - 通过模型将数据添加到 M2M
- excel - 如何使用 Excel VBA 中的宏修复 1004 错误?
- xcode - 有条件地在 Xcode 项目中包含文件
- python - 熊猫:处理数据框