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

标签 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)

尝试替换匹配的。

最佳答案

你可以使用

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 .

关于python - 如何使用正则表达式更改具有特定值的字符串中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54824966/

相关文章:

c - 如何将远程机器上实时运行的tcpdump结果导出到我电脑上的pcap文件中?

python - 尝试使用 python API 在测试网上发行 token - Neblio

python - 安装python模块时出现语法错误

java - 字符串的高级正则表达式处理

c++ - 转义字符串常量以嵌入 std::regex

java - 在字符串中多次匹配某个模式

python-3.x - Pygame TypeError : 'int' object is not callable

python - 在 Python 中将字符串转换为数字

python - Tkinter 不与 Pycharm 配合使用

python - 如何分组并获得三个最频繁的值?