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 ().