簡體   English   中英

有沒有辦法檢查任何列表元素是否在字符串中並替換它們?

[英]Is there a way to check if any of list elements are in a string and replace them?

這是我嘗試過的代碼,但它在兩種情況下都返回 output

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)

Output:

True lalala lvlvl lblblbl asasa
bla lalala lvlvl lblblbl True

雖然我需要:

True lalala lvlvl lblblbl True

我建議只拆分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'如果ialist
  • ['True' if i in alist else i for i in astring.split()] == ['True', 'lalala', 'lvlvl', 'lblblbl', 'True']
  • ' '.join(['True', 'lalala', 'lvlvl', 'lblblbl', 'True']將列表轉換為單個字符串,並以' '連接列表元素。

str.replace通過用新的替換舊的來返回字符串的新副本並且您沒有保存它,因此只需始終保存新副本並執行下一個replace操作

返回字符串的副本,其中所有出現的 ZE83AED3DDF4667DEC0DAAAACB2BB3BE0BZ 舊替換為新

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', 'blblblbl', 'asasa', 'blblblblblb']
astring = 'bla lalala lvlvl lblblbl asasa'
print(re.sub("|".join(sorted(alist,key=len,reverse=True)),"True",astring))

您可以使用范圍 function 進行迭代並使用該索引替換拆分列表中的單詞

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)

Output:

'True lalala lvlvl lblblbl True'

你可以用 try 和 except 來 go。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM