我需要从句子中删除元音。 但是它应该在句子之间省略单个元音字符,如 I 和 a
如何在输出中包含单个元音字符?
vowels = ('a', 'e', 'i', 'o', 'u', 'A', 'I', 'E', 'O', 'U')
def sms_encoding(data):
list1=data.split()
list2=''
list3=''
for i in range(0,len(list1)):
if len(list1[i])==1:
list2+=(list1[i])
if len(list1[i])!=1:
for char in data:
if char in vowels:
data = data.replace(char, '')
list3=list2+(data)
return list3
data="a Have a nice day"
print(sms_encoding(data))
输出
a hv nc dy
答案 0 :(得分:1)
使用split
创建list
,其中每个element
都是一个单词。然后,您可以使用generator-expression
删除words
vowels
。我们还需要使用str.join
将单词连接在一起,并在每个单词之间加一个空格。
这给我们留下了一个简洁的单行解决方案:
def sms_encoding(s):
return ' '.join(w for w in s.split() if w not in 'aeiou')
并且口译员的测试表明它有效:
>>> sms_encoding('a have a nice day')
'have nice day'
或者,如果您想保持单字符元音但删除单词元音,则可以re.sub
使用this regex on regex101。
这样会使你的功能像:
import re
def sms_encoding(s):
return re.sub('(?<!\s)[aeiou](?!\s)', '', s)
在测试时反过来工作:
>>> sms_encoding('a have a nice day')
'a hve a nce dy'