根据列表元素中的字符将列表元素拆分为子列表

split list elements into sublists based on character in list element

我有一个这样的列表:

['AA/usermanagedmanualreport',
'AccountingDocuments/BPC/COPA/NGAP/Tableau',
'AccountingDocuments/BW',
'AccountingDocuments/DOMS/POS/RFS/SAPBPC/COPA/NGAP/Tableau',
'AccountsPayable/Akritiv']

我正在尝试这样获取它:

['AA/usermanagedmanualreport',
'AccountingDocuments/BPC',
'AccountingDocuments/COPA',
'AccountingDocuments/NGAP',
'AccountingDocuments/Tableau',
'AccountingDocuments/BW',
'AccountingDocuments/DOMS',
'AccountingDocuments/POS',
'AccountingDocuments/RFS',
'AccountingDocuments/SAPBPC',
'AccountingDocuments/COPA',
'AccountingDocuments/NGAP',
'AccountingDocuments/Tableau',
'AccountsPayable/Akritiv']

我基本上只需要根据列表中的第一个值和“/”分隔符将每个列表元素拆分为单独的元素。

尝试过类似的方法,但效果不尽如人意:

[l.split('/') for l in ','.join(myList).split('|')]

有什么想法吗?

最简单的方法可能是使用循环:

parts = []
for x in myList:
    first, *rest = x.split("/")
    parts += [first + "/" + part for part in rest]

print(parts)

你可以这样做:

l=['AA/usermanagedmanualreport',
'AccountingDocuments/BPC/COPA/NGAP/Tableau',
'AccountingDocuments/BW',
'AccountingDocuments/DOMS/POS/RFS/SAPBPC/COPA/NGAP/Tableau',
'AccountsPayable/Akritiv']

def div(x):
    s=x.split('/')
    first=s[0]
    rest=s[1:]
    return [first+'/'+i for i in rest]

res=[]
for i in l:
    if i.count('/')<2:
        res.append(i)
    else:
        res.extend(div(i))

>>>print(res)

['AA/usermanagedmanualreport', 'AccountingDocuments/BPC', 'AccountingDocuments/COPA', 'AccountingDocuments/NGAP', 'AccountingDocuments/Tableau', 'AccountingDocuments/BW', 'AccountingDocuments/DOMS', 'AccountingDocuments/POS', 'AccountingDocuments/RFS', 'AccountingDocuments/SAPBPC', 'AccountingDocuments/COPA', 'AccountingDocuments/NGAP', 'AccountingDocuments/Tableau', 'AccountsPayable/Akritiv']

单线娱乐:

>>> l = ['AA/usermanagedmanualreport',
...      'AccountingDocuments/BPC/COPA/NGAP/Tableau',
...      'AccountingDocuments/BW',
...      'AccountingDocuments/DOMS/POS/RFS/SAPBPC/COPA/NGAP/Tableau',
...      'AccountsPayable/Akritiv']
>>> result = [f'{a}/{x}' for a, *b in (item.split('/') for item in l) for x in b]
>>> print(*result, sep='\n')
AA/usermanagedmanualreport
AccountingDocuments/BPC
AccountingDocuments/COPA
AccountingDocuments/NGAP
AccountingDocuments/Tableau
AccountingDocuments/BW
AccountingDocuments/DOMS
AccountingDocuments/POS
AccountingDocuments/RFS
AccountingDocuments/SAPBPC
AccountingDocuments/COPA
AccountingDocuments/NGAP
AccountingDocuments/Tableau
AccountsPayable/Akritiv