繁体   English   中英

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

[英]Regex to match comma-separated strings containing comma-formatted decimals

我有这样一个逗号分隔的字符串:

"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),我不希望发生分割。

您可以按逗号分隔,然后按空格:

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

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

您在这里如履薄冰。 在您的示例中,好像使用“,”作为字段分隔符(逗号-空格)将起作用。 大多数人会选择引用字符串或使用其他定界符(竖线,制表符,\\ x1F等)。

在我看来,这非常脆弱,您很容易及时将其分解。 如果您对所获得的东西有任何影响,请先进行对话。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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