问大家一些问题,平常在我们练习时如果在没有给定数据的情况下,手敲这样一个DataFrame 对象是不是很麻烦,而且容易出错,我想了一个办法让其自动生成,这样就省事省力。
首先这些数据都是有规则的依次递增的例如:
'A0', 'A1', 'A2', 'A3', 'A4'
所以看我的操作:
def str_handle2(B): str_werater3 = 'A0,A1,A2,A3,A4' new_s = re.sub('A', B, str_werater3) list_str_weater = new_s.split(',') return list_str_weater jieguo = str_handle2("D") print(jieguo)
1. 首先我给了它一个模板,'A0,A1,A2,A3,A4',因为作为其他数据如 'B0', 'B1', 'B2', 'B3', 'B4',
只需要替换掉模板中的A就可以了。
这时我想到python 中的正则 re 模块,
re.sub('A', B, str_werater3)
re.sub(pattern, repl, string)
re.sub :
re.sub()
是 Python 标准库re
模块中的一个函数,主要用于在字符串中查找与正则表达式模式匹配的子串,并将这些匹配项替换为指定的字符串或其他内容。
pattern: 必需参数,它是要匹配的正则表达式模式。这个模式会被编译成一个正则表达式对象(如果它不是一个预编译的正则表达式对象)。
repl: 必需参数,它指定了要替换匹配到的子串的内容。它可以是一个字符串,也可以是一个接受匹配对象作为参数的函数,该函数返回一个替换字符串。
string: 必需参数,它是待处理的原始字符串,在其中查找并替换匹配项。
明白我做了什么吧?将原字符串str_werater3 中的A替换成了B,不过在我的代码re.sub('A', B, str_werater3)中 B不是将要替换的字符串,我自定义了一个方法,它是方法中的形式参数。
def str_handle2(B): str_werater3 = 'A0,A1,A2,A3,A4' new_s = re.sub('A', B, str_werater3) list_str_weater = new_s.split(',') return list_str_weater。 jieguo = str_handle2("D")
而 jieguo = str_handle2("D") 中的"D"是我想让其代替字符串中'A0,A1,A2,A3,A4' 所有A 的位置。
而 list_str_weater = new_s.split(',') 的作用:new_s.split(',') 调用字符串new_s的split()方法,让其将字符串中的元素根据逗号来分割并自动成列表
这样下来,我们只需要改变向自定义函数 str_handle2() 传入的参数即可,如果需要将所有A更换成C只需要往里面传入 "C"
str_handle2("D")
上面那个还不过瘾还需要更换输入元素才能完成。下面我叫大家一个将所有的元素都生成
例如像这样
str_zimu = 'A,B,C,D,E,F'
str_zimu_no_d = ','.join(s for s in str_zimu.split(',') if s != 'D')
list1 = str_zimu_no_d.split(',')
for outer_var in list1:
print([f'{outer_var}{inner_var}'for inner_var in range(4,8)])
s for s in str_zimu.split(',') if s != 'D' 是Python中的列表推导式(List Comprehension)语法,它是一种简洁而高效的生成新列表的方式。具体在这个场景中,它的工作原理可以分解为以下步骤: 首先,str_zimu.split(',') 将字符串 str_zimu 按照逗号 , 进行分割,得到一个包含各个分隔元素的列表。例如,对于输入 'A,B,C,D,E,F',此操作将得到 ['A', 'B', 'C', 'D', 'E', 'F']。 接下来,列表推导式 [s for s in ...] 对第一步得到的列表进行遍历。对于列表中的每一个元素 s: 如果满足条件 if s != 'D',即当前元素 s 不等于字符串 'D',则将该元素 s 加入到新生成的列表中。 最终,列表推导式完成遍历后,会生成一个新的列表,其中包含了原始列表中所有不等于 'D' 的元素。 所以整个表达式 s for s in str_zimu.split(',') if s != 'D' 的作用就是:从 str_zimu 按逗号分割出的列表中筛选出不等于 'D' 的元素,并生成一个新的列表。
','.join(s for s in str_zimu.split(',') if s != 'D') 的作用:
(s for s in str_zimu.split(',') if s != 'D')的作用是剔除原来字符串中的'D'元素,并且生成一个新列表。.join的作用将新生成列表中的所有元素进行连接.
','.join join() 方法通常用于将一个列表(尤其是由字符串构成的列表)连接成单个字符串,每个元素之间用特定的分隔符隔开。(','这就是特定字符,字符串之间用逗号隔开)
[f'{outer_var}{inner_var}'for inner_var in range(4,8)] 它是列表推导式和字符串格式化的运用。
[xxxxx'for inner_var in range(4,8)] 列表推导式
f'{outer_var}{inner_var}' 字符惨格式化,将想要写入内容写入到想要写入的地方。
f'{outer_var}{inner_var}'中outer_var 控制 像 A0 中,大写字母,inner_var 控制像A0中的数字。
for outer_var in list1: 作用: 因为想要将自定义列表中的 ['A', 'B', 'C', 'E', 'F']每个生成一个像['A4', 'A5', 'A6', 'A7']这样一个东西。所以在for 循环的监督下每当使用完 ['A', 'B', 'C', 'E', 'F']列表一个元素就停止开始遍历下一个'B'接而生成['B4', 'B5', 'B6', 'B7'],直到['A', 'B', 'C', 'E', 'F']遍历完。
尽自己可能,写入一些对大家真实有用的东西。
静下心来,将每一件事做到内心满意