2016-12-11 6 views
0

Ich habe eine Zeichenfolge, zum Beispiel:zur nächsten Zeile gehen und ersetzen

String = "This is first sentence, sentence one. This is second sentence, sentence two`." 

ich will „Satz“ ersetzen, mit einem anderen Wort aus einer Liste

my_list = ['1', 'me1', '2', 'me2'] 

so wird es worden:

"This is first 1, me1 one. This is second 2, me2 two." 

Irgendwelche Ideen?

+0

SO ist kein Tutorial-Service; * Was hast du probiert * und was genau ist das Problem damit? – jonrsharpe

+0

'str.replace' nimmt ein drittes optionales' count'-Argument, indem Sie es auf 1 setzen, können Sie die Vorkommen nacheinander ersetzen. Was passiert auch, wenn die Anzahl der Vorkommen von "Satz" in "String" nicht gleich der Länge von "Meine_Liste" ist? –

Antwort

0
String = "This is first sentence, sentence one. This is second sentence, sentence two`." 
String1 = String 
my_list = ['1', 'me1', '2', 'me2'] 

for i in range(len(my_list)): 
    String1=String1.replace("sentence",my_list[i],1) 
    print i, my_list[i] 
print String1 

heraus gesetzt:

'This is first 1, me1 one. This is second 2, me2 two`.' 
1

Die Lösung regex.sub(repl, string, count=0) Funktion und benutzerdefinierte replace_substring Funktion als Ersatz Rückruf verwenden:

def replace_substring(m): 
    if replace_substring.counter == len(my_list): 
     replace_substring.counter = 0 

    replaced = my_list[replace_substring.counter] 
    replace_substring.counter += 1 
    return replaced 

replace_substring.counter = 0 

String = "This is first sentence, sentence one. This is second sentence, sentence two`." 
my_list = ['1', 'me1', '2', 'me2'] 
pattern = re.compile(r'\bsentence\b') 

result = pattern.sub(replace_substring, String) 
print(result) 

Der Ausgang:

This is first 1, me1 one. This is second 2, me2 two`. 

https://docs.python.org/3/library/re.html#re.regex.sub

Verwandte Themen