簡體   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