以下是我回傳的串列
['aaa', 'bbb', 'ccc', 'ABN', 'AMRO', 'Bank', 'N.V.', '\nYour', 'monthly', 'statement', 'is', 'available', 'under', 'Self', 'service', '>', '\nDownload', 'statements', 'or', 'u', 'receive', 'them', 'by', 'mail.', 'aaa', 'bbb', 'ccc', 'ddd', '/TRTP/SEPA', 'OVERBOEKING/IBAN/NL93RABO0127299726/BIC/RABONL2U/NAME/', '\nPointbar', 'B.V./REMI/INV', '121-10005/EREF/NONREF', 'aaa', 'bbb', 'ccc', 'Settlement', 'FX/MM', '\nTrans.', 'Ref.', '0035979579', 'Deal', 'Ticket', 'ID', '6225447']
'ccc'如果元素 ' ddd' 不存在或從它開始'ddd'直到下一個元素,我想加入元素在元素之后開始'aaa',我可以通過它獲得以下字串。
ABN AMRO Bank N.V.
Your monthly statement is
available under Self service >
Download statements or u
receive them by mail.
/TRTP/SEPA OVERBOEKING/IBAN/NL93RABO0127299726/BIC/RABONL2U/NAME/
Pointbar B.V./REMI/INV 121-10005/EREF/NONREF
Settlement FX/MM
Trans. Ref. 0035979579
Deal Ticket ID 6225447
有人可以幫我嗎?嘗試此操作時,我陷入了嵌套的 for 回圈中。謝謝!
uj5u.com熱心網友回復:
您可以用換行符替換aaa, bbb, ccc和ddd,然后拆分為多個換行符:
import re
data = ['aaa', 'bbb', 'ccc', 'ABN', 'AMRO', 'Bank', 'N.V.', '\nYour', 'monthly', 'statement', 'is', 'available', 'under', 'Self', 'service', '>', '\nDownload', 'statements', 'or', 'u', 'receive', 'them', 'by', 'mail.', 'aaa', 'bbb', 'ccc', 'ddd', '/TRTP/SEPA', 'OVERBOEKING/IBAN/NL93RABO0127299726/BIC/RABONL2U/NAME/', '\nPointbar', 'B.V./REMI/INV', '121-10005/EREF/NONREF', 'aaa', 'bbb', 'ccc', 'Settlement', 'FX/MM', '\nTrans.', 'Ref.', '0035979579', 'Deal', 'Ticket', 'ID', '6225447']
data = [' ' if i in ['aaa', 'bbb', 'ccc', 'ddd'] else i for i in data]
data = ' '.join([i for i in data]).strip()
data = re.split('\s\s\s ', data)
這將為您提供所需組的串列
print('\n\n'.join(data)):
ABN AMRO Bank N.V.
Your monthly statement is available under Self service >
Download statements or u receive them by mail.
/TRTP/SEPA OVERBOEKING/IBAN/NL93RABO0127299726/BIC/RABONL2U/NAME/
Pointbar B.V./REMI/INV 121-10005/EREF/NONREF
Settlement FX/MM
Trans. Ref. 0035979579 Deal Ticket ID 6225447
uj5u.com熱心網友回復:
你可以試試這個:
L = ['aaa', 'bbb', 'ccc', 'ABN', 'AMRO', 'Bank', 'N.V.', '\nYour', 'monthly', 'statement', 'is', 'available', 'under', 'Self', 'service', '>', '\nDownload', 'statements', 'or', 'u', 'receive', 'them', 'by', 'mail.', 'aaa', 'bbb', 'ccc', 'ddd',
'/TRTP/SEPA', 'OVERBOEKING/IBAN/NL93RABO0127299726/BIC/RABONL2U/NAME/', '\nPointbar', 'B.V./REMI/INV', '121-10005/EREF/NONREF', 'aaa', 'bbb', 'ccc', 'Settlement', 'FX/MM', '\nTrans.', 'Ref.', '0035979579', 'Deal', 'Ticket', 'ID', '6225447']
i = 0
S = None
while True:
try:
_L = L[i:]
o = _L.index('ccc') 1
if _L[o] == 'ddd':
o = 1
S = []
while _L[o] != 'aaa':
S.append(_L[o])
o = 1
print(' '.join(S))
S = None
i = o
except (IndexError, ValueError):
if S:
print(' '.join(S))
break
uj5u.com熱心網友回復:
您可以嘗試使用正則運算式如下:
import re
data = ['aaa', 'bbb', 'ccc', 'ABN', 'AMRO', 'Bank', 'N.V.',
'\nYour', 'monthly', 'statement', 'is', 'available', 'under',
'Self', 'service', '>', '\nDownload', 'statements', 'or', 'u',
'receive', 'them', 'by', 'mail.', 'aaa', 'bbb', 'ccc', 'ddd',
'/TRTP/SEPA', 'OVERBOEKING/IBAN/NL93RABO0127299726/BIC/RABONL2U/NAME/',
'\nPointbar', 'B.V./REMI/INV', '121-10005/EREF/NONREF', 'aaa', 'bbb',
'ccc', 'Settlement', 'FX/MM', '\nTrans.', 'Ref.', '0035979579', 'Deal',
'Ticket', 'ID', '6225447']
#flatten the list
one_line = ' '.join(data)
#substitue groups 'aaa bbb ccc' and 'aaa bbb ccc ddd' with newline chars
print(re.sub(r'(aaa bbb ccc) | (aaa bbb ccc ddd)', '\n\n', one_line).lstrip())
輸出:
ABN AMRO Bank N.V.
Your monthly statement is available under Self service >
Download statements or u receive them by mail.
/TRTP/SEPA OVERBOEKING/IBAN/NL93RABO0127299726/BIC/RABONL2U/NAME/
Pointbar B.V./REMI/INV 121-10005/EREF/NONREF
Settlement FX/MM
Trans. Ref. 0035979579 Deal Ticket ID 6225447
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/321770.html
上一篇:查找字串操作消除單詞ABAP
