regex 如何将字符串的一部分替换为另一个字符串?[duplicate]

dm7nw8vv  于 2022-12-30  发布在  其他
关注(0)|答案(6)|浏览(151)
    • 此问题在此处已有答案**:

Regular expression and repeating character classes in perl(2个答案)
昨天关门了。
社区昨天讨论了是否重新讨论此问题,并将其关闭:
原始关闭原因未解决
我有一个字符串列表如下:
第一个月
我正尝试将两个#之间的字符串after替换为za
期望响应
generator = ["one#za#two1", "one#za#two2", "one#za#two3", "one#za#two4"]
我尝试了以下方法,但不起作用

import re

generator = ["one#zade#two1", "one#zaat#two2", "one#zach#two3", "one#zanl#two4"]
generator2 = []
for g in generator:
    generator2.append(re.sub(r'one#za[a-zA-z]#', 'one#za#', g))
    
print(generator2)

我到底犯了什么错?

ndasle7k

ndasle7k1#

import re

generator = ["one#zade#two1", "one#zaat#two2", "one#zach#two3", "one#zanl#two4"]
generator2 = []
for g in generator:
    generator2.append(re.sub(r'one#za[a-zA-Za-z]+#', 'one#za#', g))
    
print(generator2)

试试上面那个。

jv2fixgn

jv2fixgn2#

试试看

re.sub(r'#([a-zA-z]*)#', '#za#', g)
hfyxw5xn

hfyxw5xn3#

import re
generator = ["one#zade#two1", "one#zaat#two2", "one#zach#two3", "one#zanl#two4"]
generator2 = []
for g in generator:
    generator2.append(re.sub('#[^#]*#', '#za#', g))
print(generator2)

结果:
第一个月

oprakyz7

oprakyz74#

def replace_with_za(str) :
  chunks = str.split("#")
  return chunks[0]+"#za#"+chunks[-1]
uttx8gqw

uttx8gqw5#

如果要更改列表中的所有字符串,请尝试以下代码:

import re

generator = ["one#zade#two1", "one#zaat#two2", "one#zach#two3", "one#zanl#two4"]
for i in range(len(generator)):
    generator[i] = generator[i].replace(re.search(r'#(.*?)#', generator[i]).group(1), 'za')

当你调用print(generator)时,输出是:['one#za#two1', 'one#za#two2', 'one#za#two3', 'one#za#two4']

cclgggtu

cclgggtu6#

对于这个琐碎的用例,您不需要 re
只需在哈希字符上拆分每个字符串,然后按如下方式重新构建:

generator = ["one#zade#two1", "one#zaat#two2", "one#zach#two3", "one#zanl#two4"]

generator = [f'{left}#za#{right}' for left, _, right in map(lambda s: s.split('#'), generator)]

相关问题