定义一个拆分数据序列的函数,在新行上打印每个但不打印特定索引
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']
我有一个函数要定义。我让它把每个数据序列打印到一个新行上,但是我可以把它 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']