将列表中的字符串拆分为列表列表,如果发现特殊字符,则进一步拆分其元素

Splitting a string within a list into a list of lists and further splitting its elements if special character found

我有一个字符串列表,我根据 ('/>') 将其拆分为一个列表列表,但我想进一步拆分该列表的元素,具体取决于它是否具有特定字符 ( '/') 在其中,同时保持 'further elements' 的拆分顺序。例如

lol=['FruitSalad://Fruits/Seasonal/Summer/>June>July>August>Mangoes/Grapes/Guava',
 'FruitSalad://Fruits/Seasonal/Winter/>Nov>Dec>Jan>Banana/Oranges',
 'FruitSalad://Fruits/Seasonal/Summer/>June>July>August>Pineapple']

 l1=[lol[_].split('/>')[-1].split('>') for _ in range(len(lol)) if '/>' in lol[_]]
>>> l1
[['June', 'July', 'August', 'Mangoes/Grapes/Guava'], ['Nov', 'Dec', 'Jan', 'Banana/Oranges'], ['June', 'July', 'August', 'Pineapple']]

而不是上面的,我试图得到

[['June', 'July', 'August', 'Mangoes', 'Grapes', 'Guava'], ['Nov', 'Dec', 'Jan', 'Banana', 'Oranges'], ['June', 'July', 'August', 'Pineapple']]

非常感谢任何帮助!如果我的问题没有意义,请告诉我。 不确定这是否重要,但这应该适用于 python 2.7 和 3.6。谢谢!

您可以执行以下操作。

lol=['FruitSalad://Fruits/Seasonal/Summer/>June>July>August>Mangoes/Grapes/Guava',
 'FruitSalad://Fruits/Seasonal/Winter/>Nov>Dec>Jan>Banana/Oranges',
 'FruitSalad://Fruits/Seasonal/Summer/>June>July>August>Pineapple']

l1=[lol[_].split('/>')[-1].split('>') for _ in range(len(lol)) if '/>' in lol[_]]
final_l1 = []
for elem in l1:
   final_l1.append([])
   for each in elem:
      final_l1[-1] += each.split('/')

print(print(final_l1))

输出

[['June', 'July', 'August', 'Mangoes', 'Grapes', 'Guava'], ['Nov', 'Dec', 'Jan', 'Banana', 'Oranges'], ['June', 'July', 'August', 'Pineapple']]
  1. 对于每个元素,拆分 />
  2. 取最后一个元素,将斜杠替换为>,然后再次拆分
 [l.split("/>",1)[-1].replace("/", ">").split(">") for l in lol]

@Kaz Salvatore,试试这个:

lol=  ['FruitSalad://Fruits/Seasonal/Summer/>June>July>August>Mangoes/Grapes/Guava',
'FruitSalad://Fruits/Seasonal/Winter/>Nov>Dec>Jan>Banana/Oranges',
'FruitSalad://Fruits/Seasonal/Summer/>June>July>August>Pineapple']

[x.replace('://', ' ')
 .replace('/', ' ')
 .replace('/>', ' ')
 .replace('>', ' ')
 .replace('  ', ' ')
 .split() for x in lol]

输出:

[['FruitSalad',
  'Fruits',
  'Seasonal',
  'Summer',
  'June',
  'July',
  'August',
  'Mangoes',
  'Grapes',
  'Guava'],
 ['FruitSalad',
  'Fruits',
  'Seasonal',
  'Winter',
  'Nov',
  'Dec',
  'Jan',
  'Banana',
  'Oranges'],
 ['FruitSalad',
  'Fruits',
  'Seasonal',
  'Summer',
  'June',
  'July',
  'August',
  'Pineapple']]

你也可以使用 Regular expression :

import re 
[re.split(r'/|>',l.split('/>')[-1]) for l in lol if '/>' in l]