【问题标题】:How to remove the alphanumeric characters from a list and split them in the result?如何从列表中删除字母数字字符并将它们拆分到结果中?
【发布时间】:2021-05-18 13:17:18
【问题描述】:
'''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 我应该做出哪些改变

【问题讨论】:

  • getVals 中的s 替换为string 并使用两个列表推导(因为字符串是字符串列表)。使用:[''.join([val for val in word if val.isalnum()]) for word in string]。 (这也包括"".join(getVals))。
  • 谢谢你.. 你能更具体地了解一下这两个列表理解部分吗?
  • 作为答案,它可能更容易阅读,但您要做的是首先遍历来自s.lower().split() 的所有组,(即["akkk@eastern", "b!@#est!"],其中"akkk@eastern" 是第一个单词等...) 使用for word in string。然后在内部检查每个字符是否为字母数字 ([val for val in word if val.isalnum()])。最后一部分 ''.join([...]) 与您的行 result = "".join(getVals) 相同,但现在对每个单词执行。

标签: python-3.x list split alphanumeric


【解决方案1】:

使用列表推导式是从字符串等序列中过滤出元素的好方法。在下面的示例中,列表推导式用于构建一个字符列表(字符在 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']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    相关资源
    最近更新 更多