【问题标题】:Python(Pandas) - Which Regex Syntax should i use here?Python(Pandas) - 我应该在这里使用哪种正则表达式语法?
【发布时间】:2021-12-06 01:05:54
【问题描述】:

这里我在 Pnadas 中使用 regex(正则表达式)。

   NIFTY30DEC219000CE.NFO
    NIFTY30DEC2116000CE.NFO
    NIFTY30DEC2116000CE
    NIFTY30DEC2116111PE
    NIFTY30DEC218100PE

我有这种类型的字符串,其中'9000'是4位字符或16000 或 5 位字符,与 more 相同。 并且输出应该是-

9000
16000
16000
16111
8100

我在输出中不需要这个30DEC21

Syntax image - which I'm using. 我正在使用这种语法。但我得到了错误的输出。

这是我的代码 - image of My Code

【问题讨论】:

  • 这不起作用,它给了我 None 类型的数据,因为这里我也有 PE 和不同的数据。

标签: python regex pandas dataframe syntax


【解决方案1】:

我会将str.extract 与以下正则表达式模式一起使用:

\d{2}[A-Z]{3}\d{2}(\d+)

Python 脚本:

df["output"] = df["col"].str.extract(r'\d{2}[A-Z]{3}\d{2}(\d+)')

这是一个demo,表明提取逻辑正在运行。

【讨论】:

  • 我已经使用了这个,但我得到的是输出“30DEC219000”,但我只想要“9000”这个。
  • 不,我的 Python 代码的输出应该只是 9000,这是捕获组的目标。你确定你在这里运行我的代码吗?
  • 这也不起作用,因为它给了我“25MAR2113000”的完整字符串,但我只需要这个字符串中的“13000”。
  • @krishnagupta 您没有在我的答案中运行代码。您正在运行其他代码。
  • 我只是在使用你的语法。
【解决方案2】:
r"NIFTY30DEC21(\d{4,5})(CE\.NFO|CE|PE)"

【讨论】:

    猜你喜欢
    • 2014-12-10
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 2018-04-24
    • 1970-01-01
    • 2020-08-16
    • 2013-03-27
    相关资源
    最近更新 更多