python - 如何在不丢失元组属性的情况下将元组元素转换为字符串?
问题描述
我通过从 MySQL 表中读取数据创建了一个元组。所有元素都是混合数据类型并且能够应用少量字符串操作(大写,删除特殊字符等),我需要将所有这些元素转换为字符串。
我尝试了 "".str() 和 .join() 但结果是纯字符串,我丢失了有关单个元素的信息。
就像是:
(ABC, XYZ, 234, QWE, 578) <-- mixed datatypes but I can do tuple[0] to just fetch ABC
游标返回多条记录。struct_address_str[0] 返回第一条记录(如上例)。struct_address_str[0][0] 返回行的第一个元素。在我进行第一次转换后, struct_address_str[0][0] 不再返回第一个元素,而是返回元素的第一个字符。
但是,在转换之后,如果我执行 tuple[0][0],我会返回 A,而我希望输出为 ABC。
我如何让这个工作?
以下是我正在使用的代码:
cursor = conn.cursor();
### Structure Address Data ###
cursor.execute("SELECT id,... FROM ...");
#converted the cursor to list
struct_address = list(cursor.fetchall())
#converted all the list elements to string
struct_address_str = [str(i) for i in struct_address]
#Checking the values
print(struct_address_str[0][1], sep="\n")
print(struct_address_str[0][2], sep="\n")
print(struct_address_str[0], sep="\n")
#converted all the list elements to uppercase
struct_address_upper = [i.upper() for i in struct_address_str]
#removing all the special characters
#cli_add_no_sp_char = [s.translate(str.maketrans('', '', '\'(#),-\".')) for s in cli_address_upper]
struct_add_no_sp_char = [s.translate(str.maketrans('\'(#),-\"./', ' ', '')) for s in struct_address_upper]
解决方案
关于什么 :
struct_address_str = [[str(i) for i in x] for x in struct_address]
然后再一次:
struct_address_upper = [[i.upper() for i in x] for x in struct_address_str]
当然,您可以使用“str(i).upper()”将两者组合在一行中。我可能会定义一个函数 sanitize(i) 进行所有需要的操作,然后在列表理解中使用它。
推荐阅读
- php - 如何从多维数组中删除重复数组?
- debugging - 在pycharm中设置一个值(调试)
- azure-data-factory - Azure 数据工厂和日志分析
- c - munmap_chunk():C 中的无效指针
- excel - 带有绝对图纸参考的链接图片
- javascript - Vue 3:如何在组件函数中访问设置变量
- ruby-on-rails - 执行 git clone 后运行包更新时出错
- php - 按名称在 Wordpress Multisite 中查找另一个站点?
- python - “时间戳”对象没有属性“移位”python股票脚本
- r - 使用 OR 条件连接数据框以匹配列