【问题标题】:Regex: exclude trailing .0 but include all strings正则表达式:排除尾随 .0 但包括所有字符串
【发布时间】:2016-09-08 17:26:22
【问题描述】:

我有许多浮点数/字符串,如下所示: 12339.0 133339 159.0 dfkkei 某物 32439

其中一些有尾随 .0。如何将所有没有尾随 .0 的数字显示为常规压制,包括不是数字的项目?我尝试了类似的方法,希望它将所有 .0 从捕获组中排除,但它不起作用:(.*)(:?.0)?

https://regex101.com/r/sC6jO2/1

【问题讨论】:

  • 那么,它适用于 Python 吗?使用r'\.0+$' 删除这些值
  • 或者,不使用正则表达式,将'.0 ' 的字符串替换为' ' ;)

标签: regex


【解决方案1】:

您可以使用更简单的正则表达式:

\.0+$

并替换为空字符串,参见regex demo

正则表达式匹配 . (\.) 后跟 1 个或多个零 (0+) 直到字符串结尾 ($)。

如果您打算在初始尝试中匹配两个组,请使用

^(.*?)(?:\.0+)?$

看到这个regex demo

这里,

  • ^ - 字符串开头
  • (.*?) - 第 1 组捕获除换行符以外的任何 0+ 个字符,尽可能少(=懒惰),最多一个
  • (?:\.0+)? - . + 一个或多个零的可选序列
  • $ - 在字符串的末尾。

【讨论】:

  • 确切地说是熊猫数据框中的值。这就是为什么我要寻找相反的东西,所以我可以做一个 df['column'].str.extract(regex, expand=True)
  • 使用^(.*?)(?:\.0+)?$
猜你喜欢
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2013-10-30
  • 1970-01-01
相关资源
最近更新 更多