【问题标题】:Thousand separator regex [duplicate]千位分隔符正则表达式
【发布时间】:2020-01-13 11:50:12
【问题描述】:

我的数字为 2.300 或 2.300.456,我想在我的数据框中转换为 2300 和 2300456,为此我尝试使用正则表达式,但这不起作用... 我用了这个表达式:

  • \d+{1-3}.\d+{3} 为 2.300
  • \d+{1-3}.\d+{3}.\d+{3} 为 2.300.456

有没有人能更好地解决我的问题?? 谢谢你

【问题讨论】:

  • 仅供参考,在正则表达式中,点/句点字符本身充当通配符并匹配任何单个字符。因此,您的正则表达式实际上匹配 2.3002a3002!300 等。要匹配实际的点,您需要使用反斜杠 \. 转义通配符 - 这将只匹配 2.300 完全。如果您要使用它,您的第一个正则表达式应该是 \d+{1-3}\.\d+{3},但正如其他人所说,您根本不需要正则表达式来解决这个问题。

标签: python regex nlp


【解决方案1】:

如果您使用的是熊猫。你可以用这个

df['col'] = df['col'].str.replace('.', '')

一般来说,对于任何字符串,都可以使用python中的字符串方法replace。在这种情况下不需要正则表达式。

【讨论】:

    【解决方案2】:

    我想你有带点的数字作为字符串。 在这种情况下,您不需要正则表达式。 考虑这段代码:

    number = '2.300.456'
    number = number.replace('.', '') # number is now the string '2300456'
    number = int(number) # number is now the integer 2300456
    

    【讨论】:

    • 是的,但我的数据框中有很多此类数字(报纸文章数据框:--> 第一列 = 标题,第二列 = 全文)。所以我必须“检测”所有数字表达式并删除点,但在我的数据集中,还有其他类型的字符串带有我无法删除的点...
    • 啊,我明白了:您有带有要保留的点的字符串(例如在电子邮件地址中)和带有要删除的点的字符串(以数字表示)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多