【问题标题】:Getting Rid of Text Inside Parentheses去掉括号内的文本
【发布时间】:2019-11-09 21:52:54
【问题描述】:

我正在处理数据框。 在“日期”列中,出于某种原因,某些日期在月份之后的括号中带有一个数字。

即2010 年 4 月 5 日 (2)

我想变成:2010 年 4 月 5 日

有没有办法去掉列中所有行的空格和括号部分?

这是我唯一尝试过的,但我对使用正则表达式很陌生,所以我不知道如何解决它:

re.sub(" (.)", "", df['Date'])

这是我得到的错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-103-06833d51a3a0> in <module>
      1 import re
----> 2 re.sub(" (.)", "", df['Date'])

~/anaconda3/lib/python3.7/re.py in sub(pattern, repl, string, count, flags)
    190     a callable, it's passed the Match object and must return
    191     a replacement string to be used."""
--> 192     return _compile(pattern, flags).sub(repl, string, count)
    193 
    194 def subn(pattern, repl, string, count=0, flags=0):

TypeError: expected string or bytes-like object

提前致谢!

【问题讨论】:

    标签: python regex dataframe


    【解决方案1】:

    括号和句点在正则表达式中都有特殊用途,所以如果你想匹配一个括号,你需要用\(显式转义它。

    一个可能对您有所帮助的正则表达式:

    \(\d+\)
    

    这将匹配带有一个或多个数字的括号。

    如果您还注意匹配(和替换)它之前的空格,则可以将空格与\s 转义序列匹配:

    \s\(\d+\)
    

    如果您需要替换括号中的任何字符串(不仅仅是数字),您可以将\d+ 替换为例如.+(句点将匹配所有字符)。

    regexr 现场查看此正则表达式。

    【讨论】:

    • 谢谢!我仍然收到错误消息。我将代码更改为re.sub(\s\(\d+\), "", df['Date'])。我得到的错误是“SyntaxError:行继续符后的意外字符”,在代码末尾有一个小胡萝卜。
    • 在python中,当您传递给re.compile(src文档here)之类的函数时,您需要用引号分隔正则表达式(正如您在最初的问题中所做的那样)。在这种情况下,re.sub("\(\d+\)",...)。让我知道这是否解决了它!
    猜你喜欢
    • 2020-12-13
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 2018-08-03
    相关资源
    最近更新 更多