具有一个df值
0 1
0 RS 125 | password1
1 EURO 25 | password2
2 DNR 30 | password3
使用正则表达式如何立即更改这些值,就像将RS,EURO,DNR替换为100
输出应为
0 1
0 RS 100 | password1
1 EURO 100 | password2
2 DNR 100 | password3
尝试过
def Currency(0):
pattern = re.compile("(Rs |EURO |DNR |)")
result = pattern.match(name)
尝试替换匹配的内容。
答案 0 :(得分:6)
您可以使用
df['col'] = df['col'].str.replace(r'(?i)((?:Rs|EURO|DNR)\s*)\d+', r'\g<1>100')
或者,如果要将货币名称作为整个单词进行匹配,请在捕获组的前面加上单词边界\b
:
r'(?i)\b((?:Rs|EURO|DNR)\s*)\d+'
^^
请参见this regex demo。
详细信息
(?i)
-不区分大小写的标志((?:Rs|EURO|DNR)\s*)
-第1组(替换模式中的\g<1>
引用此值):
(?:Rs|EURO|DNR)
-Rs
或EURO
或DNR
\s*
-超过0个空格\d+
-一个或多个数字请参见regex demo。