Reputation: 5266
I have some strings containing many values separated by a white space character. Sometime we can find a value which is composed of many values which are separated by the character "," for example in the following string, the values 3 and 5 are composed of 2 and 4 values respectively separated by commas.respectively
value1 value2 value3_0,value3_1 value4 value5_0,value5_1,value5_2,value5_3 value6
I want to split this string into many strings so that the is no composed value in the string. So the previous string become:
value1 value2 value3_0 value4 value5_0 value6
value1 value2 value3_1 value4 value5_1 value6
value1 value2 value3_0 value4 value5_2 value6
value1 value2 value3_1 value4 value5_3 value6
value1 value2 value3_0 value4 value5_1 value6
value1 value2 value3_1 value4 value5_2 value6
value1 value2 value3_0 value4 value5_3 value6
value1 value2 value3_1 value4 value5_0 value6
How is it possible to do that very easily in python ?
EDIT: In the input string, there is a component "value3_0,value3_1" (this component is composed of 2 values) and we have "value5_0,value5_1,value5_2,value5_3" (this component is composed of 4 values), so we will have 2*4 = 8 new strings where there is no composed components.
Upvotes: 1
Views: 71
Reputation: 142126
How about:
from itertools import product
text = 'value1 value2 value3_0,value3_1 value4 value5_0,value5_1,value5_2,value5_3 value6'
items = [el.split(',') for el in text.split()]
for item in product(*items):
print item # use ' '.join(item) to get a string back
Output:
('value1', 'value2', 'value3_0', 'value4', 'value5_0', 'value6')
('value1', 'value2', 'value3_0', 'value4', 'value5_1', 'value6')
('value1', 'value2', 'value3_0', 'value4', 'value5_2', 'value6')
('value1', 'value2', 'value3_0', 'value4', 'value5_3', 'value6')
('value1', 'value2', 'value3_1', 'value4', 'value5_0', 'value6')
('value1', 'value2', 'value3_1', 'value4', 'value5_1', 'value6')
('value1', 'value2', 'value3_1', 'value4', 'value5_2', 'value6')
('value1', 'value2', 'value3_1', 'value4', 'value5_3', 'value6')
Upvotes: 2