【问题标题】:Best way to replace multiple chars in string替换字符串中多个字符的最佳方法
【发布时间】:2020-12-27 19:33:08
【问题描述】:

我想替换字符串中的某些字符,如下所示:

输入字符串:

s = "1kgbutter2kilochilli30gmssalt"

输出字符串:

s = " 1kg butter 2kilo chilli 30gms salt"

我已经尝试使用re.sub,如下所示,但没有成功。

re.sub(r"^[0-9]*(kg|kilo|gm)s$", "*how do i add spaces if exp matches*", s)

【问题讨论】:

  • 如果只有1个gm怎么办?那么,s 可能是下一个单词的一部分。
  • 只有 1gms。's' 不会出现在下一个单词中。
  • 然后使用re.sub(r'\d+(?:kg|kilo|gm)s?', r' \g<0> ', text).strip()

标签: python regex replace


【解决方案1】:

你可以使用

re.sub(r'\d+(?:kg|kilo|gm)s?', r' \g<0> ', s)

注意:如果您需要避免在字符串的开头或结尾出现空格,请在re.sub 的末尾添加.strip()

请参阅regex demo。详情:

  • \d+ - 一位或多位数字
  • (?:kg|kilo|gm) - kgkilogm
  • s? - 一个可选的 s 字符。

\g&lt;0&gt; 是一个反向引用,它将整个匹配项插入到结果字符串中。

this Python demo:

import re
s = "1kgbutter2kilochilli30gmssalt"
print( re.sub(r'\d+(?:kg|kilo|gm)s?', r' \g<0> ', s).strip() )
# => 1kg butter 2kilo chilli 30gms salt

【讨论】:

  • 谢谢你。这就是我要找的。我是 python 新手.. 还不知道这么多东西。
猜你喜欢
  • 2011-03-25
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 2015-10-09
相关资源
最近更新 更多