【问题标题】:Want to split strings when they change case想要在字符串改变大小写时拆分字符串
【发布时间】:2014-06-05 16:23:58
【问题描述】:

当字符串在一个单词中从小写转换为大写时,我试图拆分它。

例子:

'New Hampshire, State ofColorado, State ofU.S. Court of Appeals for the D.C. CircuitDistrict of Columbia Court of AppealsMaine, State of'

拆分后的字符串应该是什么样子:

['New Hampshire, State of', 
 'Colorado, State of', 
 'U.S. Court of Appeals for the D.C. Circuit', 
 'District of Columbia Court of Appeals',
 'Maine, State of']

【问题讨论】:

  • 显示一些代码。您是否尝试过解决此问题?正则表达式实际上是一个要求,还是您可以循环遍历字符串并根据需要拆分?
  • 我已将您的问题编辑为我认为您要问的内容 - 您能否查看它以仔细检查这是否符合您的理解? “解析出来”不是很清楚。

标签: python regex string python-3.x


【解决方案1】:

您可以在(?<=[a-z])(?=[A-Z]) 上拆分(至少如果您只处理字母a-z)。

由于 python 中的 split 不允许零宽度匹配,你可以做一些愚蠢的事情:

re.sub(r'(?<=[a-z])(?=[A-Z])', '!RANDOM!MARKER!', str).split('!RANDOM!MARKER!')

【讨论】:

  • 你测试了吗?对我来说,这不会分裂任何东西。 (也许是因为该模式没有消耗任何东西?)
  • @IchUndNichtDu,你是对的。 “请注意,split 永远不会在空模式匹配上分割字符串。” 这与我所知道的任何其他风格的分割都不一样。 (甚至似乎有几个错误报告。)
  • 使用“\0”作为临时标记可能更安全。我认为可以合理地预期,如果字符串仅包含字母 [a-z]|[A-Z],则它不包含 NULL 字节。
猜你喜欢
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 2013-05-21
  • 2015-03-31
  • 1970-01-01
相关资源
最近更新 更多