python регулярное выражение регулярное выражение - PullRequest
1 голос
/ 04 апреля 2020

Я хочу удалить все гласные из строки. но следующий код не работает. Вместо этого мне нужно поставить escape-символ перед ^
т.е. obj=re.compile(r'[\^aeiouAEIOU]')

import re

def disemvowel(string):
    obj=re.compile(r'[^aeiouAEIOU]')   
    k=obj.sub('',string)
    return k

s='This website is for losers LOL!'  
print( disemvowel(s) )

Ответы [ 4 ]

3 голосов
/ 04 апреля 2020

Простой способ сделать это:

import re

string = "This website is for losers LOL!"
print(re.sub("[aeiouAEIOU]","",string))
3 голосов
/ 04 апреля 2020

Попробуйте это:

def rem_vowel(string):
    vowels = ('a', 'e', 'i', 'o', 'u')
    for x in string.lower():
        if x in vowels:
            string = string.replace(x, "")

    print(string)

string = "This website is for losers LOL!"
rem_vowel(string) 
1 голос
/ 04 апреля 2020

На самом деле ваш текущий класс персонажа [^aeiouAEIOU] будет соответствовать всему , кроме для гласных. Попробуйте эту версию:

s = "This website is for losers LOL!"
out = re.sub(r'[aeiou]', '', s, flags=re.IGNORECASE)
print(s + "\n" + out)

Это печатает:

This website is for losers LOL!
Ths wbst s fr lsrs LL!
0 голосов
/ 04 апреля 2020

Чтобы удалить гласные, вы должны сопоставить все гласные из вашей строки и заменить ее на '', поэтому нет необходимости добавлять ^ внутри []:

import re

def disemvowel(string):
    obj=re.compile(r'[aeiou]', re.I)   
    k=obj.sub('',string)
    return k

s='This website is for losers LOL!'  
print(disemvowel(s))
# Ths wbst s fr lsrs LL!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...