# 单个多字符字符串拆分
list("单个多字符字符串")
tuple("单个多字符字符串")
set("单个多字符字符串") # 重新排序
# dict不行 ValueError: dictionary update sequence element #0 has length 1; 2 is required
list("单个多字符字符串",)
tuple("单个多字符字符串",)
set("单个多字符字符串",) # 重新排序
# 字符串拆分
list("") == list([])
list("单") # 单个字符也被保存到容器中
这就解释了tuple("单个多字符字符串")
type==tuple,
其实是字符串被拆分到元组中, 以供len, 下标, 遍历
错误理解记录
def query_CoilNum(list_CoilNum):
# 避免字典, 集合, 'set' object is not subscriptable, 'dict'会将下标视为键名
# 避免字符串, 圆括号内单个字符串(不加逗号), 包括: tuple("单个字符串"), tuple("单个字符串",)
# type(tuple("单个字符串")) == tuple
# isinstance(tuple("单个字符串"), tuple) == True
# 但是其实是字符串: len, 下标, 遍历均视其为单个字符串
# len(tuple("单个字符串")) == len("单个字符串")
# 因此谨慎通过type和len判断类型, 例如tuple("1")就无法被剔除
# 允许列表, 元组(圆括号内单个字符串加一个逗号算元组)
# 避免内部元素为None和"", 可通过numpy.array限定内部元素同数据类型
# 元素为None 输出statement = "((CoilNumber like '%None%'))", 一般无筛选结果
# 元素为"" 输出statement = "((CoilNumber like '%%'))", 筛选所有非null行
# 等效于statement = "CoilNumber is not null"
# 综上所述, 可用list函数列表化元组,集合,字典(只保留键名)
# 避免字符串, 圆括号内单个字符串(不加逗号), 包括: tuple("单个字符串"), tuple("单个字符串",)
# list函数会对其逐个字符拆分
# str函数会对tuple("单个字符串"), tuple("单个字符串",)进行逐个字符拆分然后合成字符串
# tuple("单个字符串"), tuple("单个字符串",), list("单个字符串")
# 然后判断 if all(x not in [None, ""]) for x in list_CoilNum)
# 空列表也会输出 True
# 也可以筛选 list_CoilNum = [x for x in list_CoilNum if x not in [None, ""]]
# 还可以剔除长度低于8的整数字符串,和字符串前8位字符不是整数字符串的元素
# 避免空列表
# 空列表[-1], list index out of range
# 字符串圆括号+字符串+字符串圆括号, 输出没有忽略字符串圆括号
# 但实际应用该字符串时, 圆括号内单个字符串, 忽略圆括号
if len(list_CoilNum) > 0:
# 列表_卷号,个数n=len,第1~n个的索引是0~n-1
statement = '('
# 第1~倒数第2个的索引是0~n-1-1,即[0,n-1)
for i in range(len(list_CoilNum)-1):
statement += f"(CoilNumber like '%{list_CoilNum[i]}%') or "
# 倒数第1个的索引是n-1
# if len(list_CoilNum) == 1: 一个语句有两个括号, 不影响使用
statement += f"(CoilNumber like '%{list_CoilNum[-1]}%'))"
else:
# DatabaseError: 不可以用None, f"{None}" == "{}".format(None) == "None"
# DatabaseError: 不可以用""
# 如果允许所有CoilNUm, 赋值statement = "1=1"
# 如果筛选CoilNum缺失, 赋值statement = "CoilNumber is null"
# 如果筛选CoilNum非缺失的全部行, 赋值statement = "CoilNumber is not null"
# 不能使用 = null 或 <> null, 因为null表示未知值, 无法进行比较
statement = "1=1"
return statement
标签:tuple,list,len,CoilNum,statement,单个,字符串
From: https://blog.51cto.com/u_16055028/8737135