简体   繁体   中英

Regex to match comma-separated strings containing comma-formatted decimals

I have comma-separated strings like this one:

"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."

I want to split the string by comma, but the problem is that there are numbers with a comma as the decimal separator in the string (for example: 260,00), for which I don't want a split to happen.

You could split by comma, followed by space:

>>> 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.']

Note that this will remove both the comma and the following space from the resulting strings.

You're walking on thin ice here. From your example, it seems like using ", " as the field separator (comma-space) would work. Most would opt to quote the strings or use a different delimiter (pipe, tab, \\x1F, etc).

This seems very fragile to me, and you could easily be broken further out in time. If you have any influence on what is being given to you, have that conversation first.

The following avoids the fragility that was pointed out by @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)

output:

['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.']

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM