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