仅使用python正则表达式,如何查找和替换句子中第n个单词的出现?例如:
str = 'cat goose mouse horse pig cat cow'
new_str = re.sub(r'cat', r'Bull', str)
new_str = re.sub(r'cat', r'Bull', str, 1)
new_str = re.sub(r'cat', r'Bull', str, 2)
Run Code Online (Sandbox Code Playgroud)
我上面有一句话,"cat"这个词出现在句子中两次.我希望第二次出现的'猫'改为'公牛',留下第一个'猫'字.我的最后一句话看起来像是:"猫鹅鼠马猪公牛".在我上面的代码中,我试过3次不能得到我想要的东西.
我有一个函数来计算变量参数列表的算术平均值.它有一个位置参数和rest变量参数.所以代码如下所示.
def mean(x, *l):
sum = x
for i in l:
sum += i
return sum / (1.0 + len(l))
Run Code Online (Sandbox Code Playgroud)
现在我定义一个包含var参数的列表
z = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
现在我打电话给我的功能
mean(*z) which prints 2.5 which is correct.
Run Code Online (Sandbox Code Playgroud)
那么这里发生了什么?我的理解是当我做*z它解压缩列表z.但后来它如何从列表中选择第一个位置参数并保持列表的其余部分保持不变,以获得函数均值中定义的'l'的长度.它是否解压缩列表z只是从z中提取第一个元素然后保留z的其余部分?如果可以用列表完成那么如何?
另外,如果我单独使用z作为参数调用该函数,则会抛出错误
ari_mean(z)Traceback(最近一次调用last):文件"",第1行,在文件"",第5行,在ari_mean中TypeError:不支持的操作数类型为/:'list'和'float'
谢谢.
我有一个具有相同数量的奇数和偶数整数的列表.目标是修改列表以在奇数索引处具有奇数整数,在偶数索引处具有甚至整数.
这是我的方法:
我找出偶数索引和奇数索引的数字.然后找出偶数索引处的奇数和奇数索引处的偶数.最后交换错位的数字.
x = [3, 2, 5, 6, 4, 7, 8, 9, 10, 11]
even_pos = []
odd_pos = []
for i in range(len(x)):
if x[i] % 2 == 0:
even_pos.append(i)
else:
odd_pos.append(i)
even_pos_with_odd = []
odd_pos_with_even = []
for j in range(len(even_pos)):
if even_pos[j] % 2 != 0:
even_pos_with_odd.append(j)
if odd_pos[j] % 2 == 0:
odd_pos_with_even.append(j)
for n in range(len(even_pos_with_odd)):
temp = x[odd_pos[odd_pos_with_even[n]]]
x[odd_pos[odd_pos_with_even[n]]] = x[even_pos[even_pos_with_odd[n]]]
x[even_pos[even_pos_with_odd[n]]] = temp
Run Code Online (Sandbox Code Playgroud)
虽然它有效但我对解决方案不是很满意.对我的问题有更好的解决方案吗?我的目标是使x[]像[2, 3, 6, 5, 4, 7, …