按分隔符拆分的函数,删除纯数值和空格或空索引

Function that splits by delimiter, removes numerical only values and whitespaces or empty indices

我正在编写一个按分隔符拆分的函数,删除纯数值和白色 space 或空索引。 但是我似乎无法让它不打印,或删除分隔符分隔的空索引。

假设我的样本是 ABC//DEF/GH//I,我希望它被“/”分割然后删除产生的空 space。 到目前为止,我的输出看起来像这样。

["ABC", "", "DEF", "GH", "", "I"]

我可以包括什么来删除“”位?

def split_lines(lines, delimiter, remove = '[0-9]+$'):
  for line in lines:
    tokens = line.split(delimiter)
    tokens = [re.sub(remove, "", token) for token in tokens]
    print(tokens)

试试这个

lst = ["ABC", "", "DEF", "GH", "", "I"]


new_lst = list(filter(lambda e:e,lst))
print(new_lst)

输出

['ABC', 'DEF', 'GH', 'I']

如果还想从列表中删除 ' ' 个 space 然后使用这个

lst = ["ABC", " ", "DEF", "GH", " ", "I"]


new_lst = list(filter(lambda e:e.strip(),lst))
print(new_lst)

输出

['ABC', 'DEF', 'GH', 'I']

下面是如何完成此操作的示例。添加了更多输入数据以使事情更清楚:

import re
def split_lines(lines, delimiter, remove='[0-9]+$'):
    for line in lines:
        tokens = [t for t in line.split(delimiter) if t]
        yield [re.sub(remove, '', t) for t in tokens]

for line in split_lines(['ABC//DEF/GH//I', 'ABC1//DEF2/GH3//I4'], '/'):
    print(line)

输出:

['ABC', 'DEF', 'GH', 'I']
['ABC', 'DEF', 'GH', 'I']