首页 > 解决方案 > 如何从列表中删除字母数字字符并将它们拆分为结果?

问题描述

'''def tokenize(s):
    string = s.lower().split()
    getVals = list([val for val in s if val.isalnum()])
    result = "".join(getVals) 
    print (result)'''

tokenize('AKKK@eastern B!@#est!')

我正在尝试('akkkeastern','best')的输出

但我对上述代码的输出是 - AKKKeasternBest 我应该做出哪些改变

标签: python-3.xlistsplitalphanumeric

解决方案


使用列表推导是从字符串等序列中过滤元素的好方法。在下面的示例中,列表推导式用于构建一个字符列表(字符在 Python 中也是字符串),这些字符可以是字母数字或空格 - 我们保留周围的空间以供稍后用于拆分列表。创建过滤列表后,剩下要做的就是使用它制作一个字符串join,最后但并非最不重要split的是,在空格处将其分成两部分。

例子:

string = 'AKKK@eastern B!@#est!'

# Removes non-alpha chars, but preserves space
filtered = [
    char.lower()
    for char in string
    if char.isalnum() or char == " "
]

# String-ifies filtered list, and splits on space
result = "".join(filtered).split()
print(result)

输出:

['akkkeastern', 'best']

推荐阅读