有没有一种方法可以检查列表元素是否在字符串中并替换它们?

这是我尝试过的代码,但在两种情况下都会返回输出

alist = ['bla','blblblbl','asasa','blblblblblb']
astring = 'bla lalala lvlvl lblblbl asasa'
for i in alist:
    if i in astring:
        newstring = astring.replace(i,'True')
        print(newstring)

输出:

True lalala lvlvl lblblbl asasa
bla lalala lvlvl lblblbl True

在我需要的时候

True lalala lvlvl lblblbl True
jayztimes 回答:有没有一种方法可以检查列表元素是否在字符串中并替换它们?

我建议仅拆分astring,使用列表推导进行替换,然后将其重新加入:

print(' '.join(['True' if i in alist else i for i in astring.split()]))

产生:

True lalala lvlvl lblblbl True

对此进行细分:

print(' '.join([
    'True' if i in alist else i 
    for i in astring.split()
]))
  • astring.split() == ['bla','lalala','lvlvl','lblblbl','asasa']
  • 如果'True' if i in alist else ii中,
  • 'True'i替换alist
  • ['True' if i in alist else i for i in astring.split()] == ['True','True']
  • ' '.join(['True','True']将列表变成单个字符串,其中' '加入了列表元素。
,

str.replace通过将旧字符串替换为new来返回字符串的新副本,而您没有保存它,因此,请始终保存新副本并执行下一个replace操作

  

返回该字符串的副本,并将所有出现的旧子字符串替换为新字符串

alist = ['bla','blblblbl','asasa','blblblblblb']
astring = 'bla lalala lvlvl lblblbl asasa'
    for i in alist:
       if i in astring:
           astring = astring.replace(i,'True')  # True lalala lvlvl lblblbl True
    print(astring)
,

您可以使用re.sub

轻松解决此问题
alist = ['bla','blblblblblb']
astring = 'bla lalala lvlvl lblblbl asasa'
print(re.sub("|".join(sorted(alist,key=len,reverse=True)),"True",astring))
,

您可以使用范围函数进行迭代,并使用该索引替换拆分列表中的单词

def replace(string_data,map_list):

    splited_string = string_data.split()
    for word in range(len(splited_string)):
        if splited_string[word] in map_list:
            splited_string[word] = 'True'
    return " ".join(splited_string)

输出:

'True lalala lvlvl lblblbl True'
,

您可以尝试并尝试。

alist = ['bla','blblblblblb']
astring = 'bla lalala lvlvl lblblbl asasa'
for i in alist:
    try:
        astring = astring.replace(i,'True')
    except:
        pass
print(astring)
本文链接:https://www.f2er.com/3127772.html

大家都在问