拆分包含标题的字符串的最佳方式



这是我的字符串:

data = '2.5 Excavation et terrassement 2.7 Travaux d'emplacement 3.2 Petits ouvrages de béton 4.2 Travaux de maçonnerie non structurale marbre et céramique 5.2 Ouvrages métalliques 6.2 Travaux de bois et plastique 7 Isolation étanchéité couvertures et revêtement extérieur 8 Portes et fenêtres 9 Travaux de finition 11.2 Équipements et produits spéciaux 12 Armoires et comptoirs usinés 13.5 Installations spéciales ou préfabriquées 15.6 Propane 17.2 Intercommunication téléphonie et surveillance'

我希望结果是:

list = ['2.5 Excavation et terrassement', '2.7 Travaux d'emplacement', '3.2 Petits ouvrages de béton',...]

提前谢谢。

您可以使用re.findall:

print(re.findall(r'd[d.]*D+[^sd]', data))

说明:

  • d[d.]*将匹配一个数字,后跟任意数字(包括零(和点
  • D+将匹配一个或多个非数字字符
  • [^sd]确保匹配不会以空格(相当于剥离(或数字(属于下一个标题(结束
编辑:这不是傻瓜式的,因为标题中出现的任何数字都将被识别为新标题的开头(很难避免,因为你有标题#,比如8或9…(

您可以使用re.split((处理数字前面的空格作为分隔符:

import re
print(re.split(r' (?=d)',data))

(?=d)部分是一个前瞻性的部分,它确保只有后面跟着数字的空格才会被视为分隔符

输出:

['2.5 Excavation et terrassement', 
"2.7 Travaux d'emplacement", 
'3.2 Petits ouvrages de béton', 
'4.2 Travaux de maçonnerie non structurale marbre et céramique', 
'5.2 Ouvrages métalliques', 
'6.2 Travaux de bois et plastique', 
'7 Isolation étanchéité couvertures et revêtement extérieur', 
'8 Portes et fenêtres', 
'9 Travaux de finition', 
'11.2 Équipements et produits spéciaux', 
'12 Armoires et comptoirs usinés', 
'13.5 Installations spéciales ou préfabriquées', 
'15.6 Propane', 
'17.2 Intercommunication téléphonie et surveillance']

最新更新