在python正则表达式中查找括号

时间:2018-03-19 17:05:16

标签: regex python-3.x

我的文字字符串如下所示:

yryr%(DENHP@Germany)

我希望我的输出看起来像这样:

yryr__DENHP_Germany_

(我也想替换句号和逗号)。

这些实际上是pandas数据框中的变量,而我正试图在一分钟内匹配括号......这就是我正在尝试的但它不是很有效。有人可以帮忙吗?

df_q_raw.columns = df_q_raw.columns.str.replace(['\.\%r'\('r'\)'], '')

2 个答案:

答案 0 :(得分:0)

str.replace不适用于正则表达式。您应该使用re.sub代替。

根据您的示例,您希望将().%@替换为_

re.sub(r"[().%@]", '', df_q_raw.columns.str)

[]表示一个字符类。如果角色是角色类的成员,则匹配该角色。

如果您要替换所有非字母数字字符,请改用此正则表达式:\W

答案 1 :(得分:0)

要仅删除括号,百分号,句号和逗号,您可以使用

df.columns = df.columns.str.replace(r'[()%.,]', '_')

要替换任何非单词字符,可以使用

df.columns = df.columns.str.replace(r'\W', '_')

\W模式匹配任何非单词char。如果您不想匹配空格,请使用[^\w\s]

如果您还想替换_(也称为单词char),则需要使用[\W_],或者,如果您不想匹配空格,请使用{{1} }。