Есть ли функция для замены переменной в строке python? - PullRequest
0 голосов
/ 06 марта 2020

Я использую python 3, и я просто хочу использовать только эффективную и эффективную единственную строку кода для следующей задачи.

Предположим, у меня есть слово, и оно имеет несколько комбинаций. Я хочу заменить все комбинации эффективной строкой кода. Например,

s2 = 'Hello Donald. DONALD is playing with his son. His son loves to play with donald' 
s2.replace('Donald', 'John')

Это заменяет только Дональд , а не DONALD и Дональд .

Как заменить все комбинации ( Дональд , ДОНАЛЬД , Дональд ) Дональд Джон .

Более конкретно:

s3 = 'NO No nO no' 

Я могу использовать

s3.replace('NO', 'yes').replace('No', 'yes').replace('nO', 'yes').replace('no', 'yes')

Но чем больше комбинаций, тем больше заменяющих функций. Как эффективно и эффективно использовать функцию замены для замены всех комбинаций NO на yes .

Ответы [ 4 ]

4 голосов
/ 06 марта 2020
import re
re.sub("(?i)no","yes", "no No nO NO") # yes yes yes yes
1 голос
/ 06 марта 2020

Вы можете использовать регулярные выражения и, в частности, re.sub в режиме без учета регистра:

import re

re.sub('donald', 'john', 'DoNalD duck', flags=re.I)
# john duck
1 голос
/ 06 марта 2020

data_str = "Нет, нет, нет, нет" .upper (). Replace ('NO', 'YES')

print (data_str)

0 голосов
/ 06 марта 2020

Если вы также хотите устранить возможные акценты ÁÀÃÂÇÉÊÍÕÓÔÚáàãâçéêíõóôú, вы можете сначала «нормализовать» символ, как в этом примере с кодом без правил регулярных выражений Когда я вырасту, я хочу быть ASCII .

Затем перейдите к тому, чтобы все символы стали «верхними» или «нижними» и заменили нужный строковый элемент.

...