【问题标题】:Best way to split a string that has titles in it拆分包含标题的字符串的最佳方法
【发布时间】:2021-11-29 13:27:41
【问题描述】:

这是我的字符串:

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

提前致谢。

【问题讨论】:

  • 为什么'2.5 Excavation et terrassement'会在结果中重复出现?你试过什么?
  • 第一个输入是一个字符串,其中包含一堆以数字开头的子标题,输出是我希望每个标题与字符串分开的结果

标签: python split


【解决方案1】:

你可以使用re.findall:

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

解释:

  • \d[\d.]* 将匹配一个数字后跟任意数字(包括零)的数字和点
  • \D+ 将匹配一个或多个非数字字符
  • [^\s\d] 确保匹配不会以空格(相当于剥离)或数字(属于下一个标题)结尾
编辑:这不是万无一失的,因为标题中出现的任何数字都将被识别为新标题的开始(几乎无法避免,因为您的标题 # 像 8 或 9...)

【讨论】:

  • 谢谢你的好心先生!
  • 不客气!如果它解决了您的问题,请考虑接受答案。
  • 我是这个平台的新手,我刚刚发现了如何去做,它完成了!
【解决方案2】:

您可以使用 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']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    • 2010-12-03
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多