python - 从列表中的几个元素中解析一些值的更 Pythonic 方式?
问题描述
有没有更 Pythonic 的方式来编写这段代码?这个 field_split 变量成为 mysql 语句的一部分。如果我解析到的传入 CSV 文件中的时间戳值为空,我需要使用重新格式化这 5 个时间字段dateutil.parser.parse
并制作该字段。[6],[7],[8],[9],[44] 是该表的时间戳列。我觉得应该有一种方法可以更多地整合此代码,但不确定如何。 None
field_split
if field_split[6]:
field_split[6]= dateutil.parser.parse(field_split[6])
else:
field_split[6]=None
if field_split[7]:
field_split[7]= dateutil.parser.parse(field_split[7])
else:
field_split[7] = None
if field_split[8]:
field_split[8]= dateutil.parser.parse(field_split[8])
else:
field_split[8] = None
if field_split[9]:
field_split[9]= dateutil.parser.parse(field_split[9])
else:
field_split[9] = None
if field_split[44]:
field_split[44] = dateutil.parser.parse(field_split[44])
else:
field_split[44] = None
解决方案
感觉像一个循环在这里是合适的:
time_fields = [6,7,8,9,44]
for v in time_fields:
if field_split[v]:
field_split[v] = dateutil.parser.parse(field_split[v])
else:
field_split[v] = None
另一种更简洁的方法......
set_ = field_split.__setitem__; parse_ = dateutil.parser.parse
[set_(i, parse_(field_split[i])) if field_split[i] else set_(i, None) for i in time_fields]
推荐阅读
- asp.net-mvc - 如何获取登录用户 ASP.NET MVC 的项目
- android - 如何使 android:usesCleartextTraffic="true" 仅用于仪器测试?
- microsoft-graph-api - 使用 MsGraph 搜索特定 contentType 的 sharePoint
- python - ValueError:检查目标时出错:预期 c_acti 的形状为 (10,) 但得到的数组的形状为 (1,)
- objective-c - 如何使用 NSTask 检查是否安装了特定的包
- dart - 在 Flutter 中,iconButton 是在 appBar 中单击,但错误即将到来
- python - pyqt5 应用程序中的嵌入式 qtconsole 无法按预期工作
- azure-devops - 使用“SQL Server 数据库部署”任务部署 DACPAC 时未找到 TMP 文件异常
- java - java.sql.SQLException:未找到列“等级”
- c++ - 有没有办法将“内联”关键字的两个含义分开(ODR 放松与功能代码内联)