[英]Split a string by comma except when in bracket and except when directly before and/or after the comma is a dash "-"?
只是想弄清楚如何用逗號分隔字符串,除非在括號中,除非在逗號之前和/或之后是破折號。 對於如何處理括號問題,我已經找到了一些很好的解決方案,但我不知道如何將其擴展到我的問題。
這是一個例子:
example_string = 'A-la-carte-Küche, Garnieren (Speisen, Getränke), Kosten-, Leistungsrechnung, Berufsausbildung, -fortbildung'
aim = ['A-la-carte-Küche', 'Garnieren (Speisen, Getränke)', 'Kosten-, Leistungsrechnung', 'Berufsausbildung, -fortbildung']
到目前為止,我已經設法做到了以下幾點:
>>> re.split(r',\s*(?![^()]*\))', example_string)
>>> out: ['A-la-carte-Küche', 'Garnieren (Speisen, Getränke)', 'Kosten-', 'Leistungsrechnung', 'Berufsausbildung', '-fortbildung']
請注意術語“Kosten-, Leistungsrechnung”和“Berufsausbildung, -fortbildung”的目標和出局之間的區別。 如果有人可以幫助我,使 output 看起來像目標,我會很高興。
提前致謝!
亞歷克斯
如果你可以使用 python regex module ,你可以這樣做:
\([^()]*\)(*SKIP)(*F)|(?<!-)\s*,\s*(?!,)
模式匹配:
\([^()]*\)
從左括號到右括號匹配(*SKIP)(*F)
跳過比賽|
或者(?<,-)\s*?\s*(,!,)
匹配要拆分的可選空白字符之間的逗號import regex
example_string = 'A-la-carte-Küche, Garnieren (Speisen, Getränke), Kosten-, Leistungsrechnung, Berufsausbildung, -fortbildung'
print(regex.split(r"\([^()]*\)(*SKIP)(*F)|(?<!-)\s*,\s*(?!,)", example_string))
Output
['A-la-carte-Küche', ' Garnieren (Speisen, Getränke)', ' Kosten-, Leistungsrechnung', ' Berufsausbildung', ' -fortbildung']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.