【问题标题】:How to remove leading spaces in float numbers如何删除浮点数中的前导空格
【发布时间】:2019-04-23 18:49:35
【问题描述】:

snapshot感谢大家的回答。这是有效的exp twt_clean.text.str.extract('((.(?=\d+)[0-9]*.[0-9]+|[0-9]+)/([1-9][0-9 ]+))')

输出:

12/10        486
10/10        436
11/10        413
13/10        287
9/10         153
8/10          98
7/10          51
14/10         38
5/10          33
6/10          32
3/10          19
4/10          15
2/10           9
1/10           4
204/170        1
80/80          1
9/11           1
 11.26/10      1
88/80          1
50/50          1
4/20           1
7/11           1
144/120        1
44/40          1
420/10         1
0/10           1
45/50          1
84/70          1
1776/10        1
 13.5/10       1
165/150        1
99/90          1
60/50          1
121/110        1
 11.27/10      1
 9.75/10       1
Name: ratings, dtype: int64

但是现在,上述 exp 的结果在几行中获取前导空格,这些空格不是整数而是浮点数。上面的 exp 本身如何消除前导空格。请帮忙。

【问题讨论】:

  • ((\d+\.\d+|\d+)/([1-9]\d+)) regex101.com/r/l6Kapl/1
  • 尝试匹配空格或制表符,然后使用捕获组[ \t]*(\d+(?:\.\d+)?/[1-9]\d+)regex101.com/r/e1nqEa/1
  • @Pauline 我的回答有帮助吗?
  • ([0-9]+(?:\.[0-9]+)?)/([1-9][0-9]+) 工作吗?

标签: regex


【解决方案1】:

你会得到额外的空间,因为点后面是肯定的前瞻.(?=\d+),它断言右边的数字是 1+。

请注意,点匹配除换行符以外的任何字符,并且您必须将点转义匹配它的字面意思\.

如果您不再在代码或工具中使用捕获组,您可以省略它们并改用非捕获组(?:

您可以将表达式更新为:

(?:[0-9]*\.[0-9]+|[0-9]+)/[1-9][0-9]+

这将匹配:

  • (?:非捕获组
    • [0-9]*\.[0-9]+ 匹配 0+ 次一个数字、一个点和 1+ 次一个数字
    • |或者
    • [0-9]+ 匹配一个数字 1+ 次
  • )关闭非捕获组
  • /匹配正斜杠
  • [1-9][0-9]+ 匹配一个数字 1-9,然后匹配 1+ 个数字

Regex demo

【讨论】:

    猜你喜欢
    • 2021-04-13
    • 2022-01-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多