列表值替换报错找不到列:如何将UUID元组列表转换为字符串列表
错误原因
- 你拿到的
my_list并不是由字符串组成的列表,每个元素是数据库查询返回的行实例(最常见的是SQLAlchemy的Row对象),外层包了长度为1的元组,元组内存储的是UUID类型的对象,不是你打印时看到的格式化字符串,所以不能直接调用字符串的replace方法。 - 行实例的
.运算符默认是匹配对应列名,你调用.replace时,程序会尝试查找行中名为replace的字段,找不到就会抛出你遇到的报错:
Could not locate column in row for column replace
正确实现代码
你不需要做字符串替换,直接提取元组内的UUID对象转成字符串即可,更简洁的写法是用列表推导式:
my_list = [str(row[0]) for row in my_list]
如果你需要和你原有循环写法对齐,修改后代码如下:
for x in range(len(my_list)): # 先提取元组第一个位置的UUID对象,再转为字符串 my_list[x] = str(my_list[x][0])
如果你后续需要保留UUID类型做运算,不需要转字符串的话,去掉str()包裹即可。
内容的提问来源于stack exchange,提问作者Chicken Sandwich No Pickles
相关产品推荐
相关产品推荐

