如何在不丢失元组属性的情况下将元组元素转换为字符串?

时间:2018-11-20 17:04:32

标签: python python-3.x

我通过从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]不再返回第一个元素,而是返回该元素的第一个字符。

但是,在转换之后,如果我执行元组[0] [0],则我想得到的输出为ABC时会得到A。

如何使它正常工作?

以下是我正在使用的代码:

    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]

1 个答案:

答案 0 :(得分:1)

那:

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