J'ai des chaînes séparées par des virgules comme celle-ci:

"Assistência 24hs com Guincho s/limite de km, 2o. Guincho 100 km no mesmo evento, Pacote de Benefícios HDI, Táxi sem Franquia, Serviços Residenciais, 7 dias de Carro Reserva quando Terceiro (sem ar cond), 7 dias de Carro Reserva, Vidros com franquia de R$ 260,00."

Je veux diviser la chaîne par une virgule, mais le problème est qu'il y a des nombres avec une virgule comme séparateur décimal dans la chaîne (par exemple: 260,00), pour lesquels je ne veux pas qu'un fractionnement se produise.

-1
gabspeck 9 mars 2016 à 14:57

3 réponses

Meilleure réponse

Vous pouvez diviser par une virgule, suivie d'un espace:

>>> s.split(", ")
['Assist\xc3\xaancia 24hs com Guincho s/limite de km',
 '2o. Guincho 100 km no mesmo evento',
 'Pacote de Benef\xc3\xadcios HDI',
 'T\xc3\xa1xi sem Franquia',
 'Servi\xc3\xa7os Residenciais',
 '7 dias de Carro Reserva quando Terceiro (sem ar cond)',
 '7 dias de Carro Reserva',
 'Vidros com franquia de R$ 260,00.']

Notez que cela supprimera à la fois la virgule et l'espace suivant des chaînes résultantes.

2
tobias_k 9 mars 2016 à 12:06

Vous marchez sur une glace mince ici. D'après votre exemple, il semble utiliser "," comme le séparateur de champs (virgule) fonctionnerait. La plupart choisiraient de citer les chaînes ou d'utiliser un délimiteur différent (pipe, tabulation, \ x1F, etc.).

Cela me semble très fragile et vous pourriez facilement être plus loin dans le temps. Si vous avez une influence sur ce qui vous est donné, ayez d'abord cette conversation.

0
dsz 9 mars 2016 à 12:08

Ce qui suit évite la fragilité qui a été soulignée par @dsz.

txt = '''Assistência 24hs com Guincho s/limite de km, 2o. Guincho 100 km no mesmo evento, Pacote de Benefícios HDI, Táxi sem 
Franquia, Serviços Residenciais, 7 dias de Carro Reserva quando Terceiro (sem ar cond), 7 dias de Carro
Reserva, Vidros com franquia de R$ 260,00.'''

import re
re.split("\,[^\d+\.\d+]",txt)

Production:

['Assist\xc3\xaancia 24hs com Guincho s/limite de km',
 '2o. Guincho 100 km no mesmo evento',
 'Pacote de Benef\xc3\xadcios HDI',
 'T\xc3\xa1xi sem Franquia',
 'Servi\xc3\xa7os Residenciais',
 '7 dias de Carro Reserva quando Terceiro (sem ar cond)',
 '7 dias de Carro\nReserva',
 'Vidros com franquia de R$ 260,00.']
0
roadrunner66 9 mars 2016 à 12:21