J'essaie de séparer ce type de données en utilisant python:
['ALCOHOL','BREAD','CAKES AND SWEETS','FRUIT AND VEGETABLES','MILK AND DAIRY PRODUCTS'],['BREAD','CAKES AND SWEETS','DIPS','MILK AND DAIRY PRODUCTS','PASTA'],['HOT FOOD','OTHERS'],['ALCOHOL','BREAD','CAKES AND SWEETS'],['BREAD','CAKES AND SWEETS','FRUIT AND VEGETABLES','MILK AND DAIRY PRODUCTS','OTHERS','SNACKS','SPICES','WATER'],['BREAD','CAKES AND SWEETS','FRUIT AND VEGETABLES'],['BREAD','CAKES AND SWEETS']
En ce moment, je divise la chaîne en utilisant '], ['
mais il semble que lorsque les chaînes sont fractionnées, les caractères utilisés pour le fractionnement sont perdus. Existe-t-il un moyen de diviser cette chaîne tout en conservant les caractères avec lesquels je partage?
3 Réponses :
Vérifiez ceci :
x code> est votre chaîne et
d
est votre délimiteur
print(re.split('(\],\[)', x))
Ou en utilisant regex
print([y+d for y in x.split(d)])
p >
En supposant que vous souhaitiez conserver les '[' et ']', vous pouvez utiliser split () pour obtenir les éléments, mais utiliser split () supprime également la chaîne de fractionnement '], ['. Vous devez donc traiter la liste que vous devez rajouter '[' et ']'.
for temp_element in temp_elements: elements.append('[' + temp_element + '],')
Résultat
['ALCOHOL','BREAD','CAKES AND SWEETS','FRUIT AND VEGETABLES','MILK AND DAIRY PRODUCTS'] ['BREAD','CAKES AND SWEETS','DIPS','MILK AND DAIRY PRODUCTS','PASTA'] ['HOT FOOD','OTHERS'] ['ALCOHOL','BREAD','CAKES AND SWEETS'] ['BREAD','CAKES AND SWEETS','FRUIT AND VEGETABLES','MILK AND DAIRY PRODUCTS','OTHERS','SNACKS','SPICES','WATER'] ['BREAD','CAKES AND SWEETS','FRUIT AND VEGETABLES'] ['BREAD','CAKES AND SWEETS']
Voulez pour conserver le ',' utilisez
input = "['ALCOHOL','BREAD','CAKES AND SWEETS','FRUIT AND VEGETABLES','MILK AND DAIRY PRODUCTS'],['BREAD','CAKES AND SWEETS','DIPS','MILK AND DAIRY PRODUCTS','PASTA'], ['HOT FOOD','OTHERS'],['ALCOHOL','BREAD','CAKES AND SWEETS'],['BREAD','CAKES AND SWEETS','FRUIT AND VEGETABLES','MILK AND DAIRY PRODUCTS','OTHERS','SNACKS','SPICES','WATER'],['BREAD','CAKES AND SWEETS','FRUIT AND VEGETABLES'],['BREAD','CAKES AND SWEETS']" elements = [] # remove leading '[' and ending ']' otherwise --------------- # you get '[[' and ']]' at first and last element input = input[1:-1] # split on '],[' and re-add '[' and ']' ------------------------- temp_elements = input.split('],[') for temp_element in temp_elements: elements.append('[' + temp_element + ']') # result ----------------------------------------------------- for element in elements: print(element)
Un autre moyen plus court consiste à remplacer le fractionnement ',' par un caractère ou une chaîne qui n'apparaît pas dans vos données, par exemple remplacer par ']###['.
Après le remplacement, vous pouvez fractionner sur '###':
elements = input.replace('],[', ']###[').split('###')
Pouvez-vous montrer à quoi vous voulez que la sortie ressemble?
Je suppose que vous pouvez le faire avec re.split ().