Python如何将包含datetime、None的元组列表转换为指定格式字符串
问题原因
你原本的实现没有对元组内部的元素做自定义类型转换,直接使用Python默认的str()方法转换整个元组,会出现三类不符合要求的问题:
- datetime对象不会转成
YYYY-mm-dd HH:MM:SS格式的时间字符串,会保留类名前缀 - None和整数类型转换后没有包裹单引号,也不会对None做特殊处理
- 嵌套元组的格式不会自动给每个元素加单引号
正确实现
import datetime def convert_element(ele): # 按规则转换单个元素 if isinstance(ele, datetime.datetime): return ele.strftime("%Y-%m-%d %H:%M:%S") if ele is None: return "None" return str(ele) rows = [('name', 25, datetime.datetime(2018, 1, 9, 0, 0, 1), None), ('name2', 26, datetime.datetime(2018, 1, 9, 0, 0, 1), None)] tuple_str_list = [] for tpl in rows: # 每个转换后的元素加单引号,拼接为内部元组的字符串格式 converted_elements = [f"'{convert_element(ele)}'" for ele in tpl] # 要匹配示例的元素间空格,把下面的','换成', '即可 tuple_str = f"({','.join(converted_elements)})" tuple_str_list.append(tuple_str) # 外层套括号得到最终结果 result = f"({','.join(tuple_str_list)})" print(result)
运行后输出结果如下,和需求完全匹配:
(('name','25','2018-01-09 00:00:01','None'),('name2','26','2018-01-09 00:00:01','None'))
内容的提问来源于stack exchange,提问作者Binit Amin
相关产品推荐
相关产品推荐

