定义一个拆分数据序列的函数,在新行上打印每个但不打印特定索引

Define a function that splits a data sequence, prints each on new line but does not print specific indexes

我有一个函数要定义。我让它把每个数据序列打印到一个新行上,但是我可以把它 print/filter 输出到特定的索引中吗?

假设我的数据序列是:

ABC//DEF//64/G//HI/55/123/JKL

我能否调整函数以同时删除编号数据的索引,以便打印:

['ABC', '', 'DEF', '', '', '', 'G', '', '', 'HI', '', '', 'JKL']

也许不仅忽略特定索引,而且用空格替换?

谢谢!

代码如下:

  def split_lines(lines, delimiter):
  for line in lines:
    tokens = line.split(delimiter)
    print(tokens)

要删除您可以使用的数字:

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

或删除仅由数字组成的那些:

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

简单的循环和一些积累使之成为可能:

def split_em_up(line, sep="/"):
    k = [[]] # start with empty inner list
    for l in line:
        if l == sep:
            k.append([]) # add new inner list
        else:
            k[-1].append(l) # add to last inner list
    
    # fix lists to strings or empty string
    for i,v in enumerate(k):
        v = ''.join(v)  # combine inner list to string
        
        # store empty if string is all numbers, else store v
        k[i] = "" if v.isdigit() else v
    
    return k

with open("yourFile.txt","w") as f:
    f.write("""
ABC//DEF//64/G//HI/55/123/JK2L
QPR/123/ST/U
""")

results = []
with open("yourFile.txt") as f:
    for line in f:
        line = line.strip() # remove \n and whitespace
        if line.strip(): # avoid empty lines
            results.append(split_em_up(line))

print(*results, sep="\n")

获得

['ABC', '', 'DEF', '', '', 'G', '', 'HI', '', '', 'JK2L']
['QPR', '', 'ST', 'U']