将列表中的字符串拆分为列表列表,如果发现特殊字符,则进一步拆分其元素
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']]
- 对于每个元素,拆分
/>
- 取最后一个元素,将斜杠替换为
>
,然后再次拆分
[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]
我有一个字符串列表,我根据 ('/>') 将其拆分为一个列表列表,但我想进一步拆分该列表的元素,具体取决于它是否具有特定字符 ( '/') 在其中,同时保持 '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']]
- 对于每个元素,拆分
/>
- 取最后一个元素,将斜杠替换为
>
,然后再次拆分
[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]