如何使用正则表达式更改具有特定值的字符串中的值?

时间:2019-02-22 10:24:52

标签: python regex python-3.x pandas dataframe

具有一个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)

尝试替换匹配的内容。

1 个答案:

答案 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)-RsEURODNR
    • \s*-超过0个空格
  • \d+-一个或多个数字

请参见regex demo