将列表转换为字符串并删除字符串中的特定字符

时间:2015-08-06 01:14:00

标签: python

我试图删除我的代码块中的元音。但是,我收到了一个我不明白的错误。我做错了什么?

def remove_vowel(list):
  for num in range(0,len(list)):
    try: 
      list.remove('a','e','i','o','u')
    except: 
          new_str = ''.list.join(list)
          return newstr
remove_vowel(['p','e','o','p','l','e'])

编辑:我得到的错误是:

Traceback (most recent call last):                                                               
  File "remove_vowel.py", line 10, in <module>                                                   
    print(remove_vowel(['p','e','o','p','l','e']))                                               
  File "remove_vowel.py", line 8, in remove_vowel                                                
    new_str = ''.list.join(list)                                                                 
AttributeError: 'str' object has no attribute 'list' 

1 个答案:

答案 0 :(得分:1)

我猜你得到的错误是remove()只有一个参数。示例 -

>>> l = [1,2,3]
>>> l.remove(1,2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: remove() takes exactly one argument (2 given)

第二个问题是没有 - ''.list - str没有list属性。

这就是为什么你不能做像 -

这样的事情
list.remove('a','e','i','o','u')

一种简单的方法来做你想要的就是使用一个没有任何元音的新列表。示例 -

def remove_vowel(l):
    return ''.join([x for x in l if x.lower() not in ['a','e','i','o','u']])

我正在返回连接的字符串,因为这也是你似乎要返回的内容。

示例/演示 -

>>> def remove_vowel(l):
...     return ''.join([x for x in l if x.lower() not in ['a','e','i','o','u']])
...
>>> remove_vowel(['p','e','o','p','l','e'])
'ppl'