我有一個我正在嘗試定義的功能。我讓它將每個資料序列列印到一個新行上,但是我可以讓它列印/過濾掉特定的索引嗎?
假設我的資料序列是:
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)
uj5u.com熱心網友回復:
要洗掉您可以使用的數字:
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)
uj5u.com熱心網友回復:
簡單的回圈和一些積累使之成為可能:
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']
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/467255.html
標籤:Python python-3.x 功能
上一篇:將React類組件轉換為函陣列件
