首页 > 解决方案 > 如何在不丢失元组属性的情况下将元组元素转换为字符串?

问题描述

我通过从 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]

标签: pythonpython-3.x

解决方案


关于什么 :

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) 进行所有需要的操作,然后在列表理解中使用它。


推荐阅读