Jak nahradit seznam řetězců řetězce?

0

Otázka

Jak mohu získat řetězec "Hello World" pomocí seznamu řetězců v kódu níže? Já se snažím:

str1="HellXXo WoYYrld"
replacers = ["YY", "XX"]

str1.replace(replacers, "")

Což ve výsledku tato chyba:

TypeError: replace() argument 1 must be str, not list

Nějaké návrhy? Díky předem!

python replace string
2021-11-23 13:40:02
5

Nejlepší odpověď

1

Efektivní metoda, která nebude vyžadovat číst znovu řetězec pro každé krmné směsi, je použít regulární výraz:

str1="HellXXo WoYYrld"
replacers = ["YY", "XX"]

import re
re.sub('|'.join(replacers), '', str1)

výstup: Hello World

2021-11-23 13:46:48
1

Je třeba opakovaně použít .replace například pomocí for smyčky

str1="HellXXo WoYYrld"
replacers = ["YY", "XX"]
for rep in replacers:
    str1 = str1.replace(rep, "")
print(str1)

výstup

Hello World
2021-11-23 13:43:56
1

ty by měl iterovat seznam krmných směsí, Zkuste Toto řešení:

str1="HellXXo WoYYrld"
replacers = ["YY", "XX"]
for elem in replacers:
  str1=str1.replace(elem, "")
  
print(str1)

Výstup:

Hello World
2021-11-23 13:44:10
1

replace trvá jen řetězec jako první argument a ne seznam řetězců.

Můžete buď smyčky přes jednotlivé podřetězce, které chcete nahradit:

str1="HellXXo WoYYrld"
replacers = ["YY", "XX"]
for s in replacers:
  str1 = str1.replace(s, "")
print(str1)

nebo můžete použít regulární výrazy k tomu:

import re
str1="HellXXo WoYYrld"
replacers = ["YY", "XX"]
re.sub('|'.join(replacers), '', str1)
2021-11-23 13:53:16
0

můžete použít regulární výraz, ale to záleží na váš případ použití například:

 regex = r"("+ ")|(".join(replacers)+ ")"

ve vašem případě vytváří tento regulární výraz: (XX)|(YYY) pak můžete použít znovu.sub:

re.sub(regex, "", a)

alternativou by mohlo být použití pro smyčce a nahradit hodnoty v krmné směsi

2021-11-23 14:37:26

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................