我的文字字符串如下所示:
yryr%(DENHP@Germany)
我希望我的输出看起来像这样:
yryr__DENHP_Germany_
(我也想替换句号和逗号)。
这些实际上是pandas数据框中的变量,而我正试图在一分钟内匹配括号......这就是我正在尝试的但它不是很有效。有人可以帮忙吗?
df_q_raw.columns = df_q_raw.columns.str.replace(['\.\%r'\('r'\)'], '')
答案 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} }。