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

艾瑪艾*_*瑪艾瑪 3 python regex dataframe python-3.x pandas

有价值的df

    0               1 
0 RS 125       | password1
1 EURO 25      | password2
2 DNR 30       | password3
Run Code Online (Sandbox Code Playgroud)

使用正则表达式如何一次更改这些值的值,喜欢RS,EURO,DNR之后的值应该替换为100

输出应该是

    0               1 
0 RS 100       | password1
1 EURO 100      | password2
2 DNR 100      | password3
Run Code Online (Sandbox Code Playgroud)

试过这个

def Currency(0):

    pattern = re.compile("(Rs |EURO |DNR |)")
    result = pattern.match(name)
Run Code Online (Sandbox Code Playgroud)

试图替换匹配的.

Wik*_*żew 6

你可以用

df['col'] = df['col'].str.replace(r'(?i)((?:Rs|EURO|DNR)\s*)\d+', r'\g<1>100')
Run Code Online (Sandbox Code Playgroud)

或者,如果要将货币名称与整个单词匹配,请在捕获组前加上单词边界\b:

r'(?i)\b((?:Rs|EURO|DNR)\s*)\d+'
      ^^
Run Code Online (Sandbox Code Playgroud)

看到这个正则表达式演示.

细节

  • (?i) - 不区分大小写的标志
  • ((?:Rs|EURO|DNR)\s*)- 第1组(\g<1>在替换模式中指的是此值):
    • (?:Rs|EURO|DNR)- RsEURODNR
    • \s* - 0+空格
  • \d+ - 一个或多个数字

请参阅正则表达式演示.