正则表达式匹配逗号分隔的包含逗号格式小数的字符串

时间:2016-03-09 11:57:53

标签: python regex

我有逗号分隔的字符串,如下所示:

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

我想用逗号分割字符串,但问题是字符串中有一个带逗号作为小数点分隔符的数字(例如:260,00),我不想要分割即将发生。

3 个答案:

答案 0 :(得分:2)

你可以用逗号分隔,然后是空格:

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

请注意,这将从结果字符串中删除逗号和以下空格。

答案 1 :(得分:0)

你在这里走在薄冰上。从您的示例中,似乎使用“,”,因为字段分隔符(逗号空间)将起作用。大多数人会选择引用字符串或使用不同的分隔符(管道,制表符,\ x1F等)。

这对我来说似乎非常脆弱,你很容易被及时打破。如果您对给予的内容有任何影响,请先进行该对话。

答案 2 :(得分:0)

以下内容避免了@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)

输出:

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