我想写一个函数,它过滤掉所有不是字母的字符。 例如
allLetters("Hell4208o@World.com") --> “HelloWorldcom”
我知道如何使用诸如isalpha
、.join
、.append
等内置函数来实现这一点。在
def allLetters2(phrase):
l = []
for characters in phrase:
if characters.isalpha():
l.append(characters)
return ''.join(l)
但是我在寻找一种方法,我不使用那些函数,只使用for
循环和string.ascii_letters
。与此结构类似:
一般来说,过滤/删除或选择字符集子集之类的问题最好由str.translate处理,如果使用的是正确的话
编码
用法
^{pr2}$您可以使用:
当您这样做时,
for characters in phrase
字符实际上是短语中的一个字符。循环一个接一个地绕着他们。string.ascii_letters
是一个包含所有字母的字符串-短语中的单个字符永远不等于这个值。这使您的检查-characters == string.ascii_letters
不合逻辑。在相反,您应该检查字符是否是
^{pr2}$in
字符串.ascii_字母. 这告诉我们它是否是一个ascii字母。在您的代码还有一个放错位置的return语句。即使条件为真,它也只返回一个字符。您的代码可以重建为:
这正是我上面的代码所做的-只是它使用list comprehension使其更简短、更具可读性。在
如果不想使用join,只需连接:
不同方法的一些时间安排:
^{pr2}$相关问题 更多 >
编程相关推荐