【问题标题】:Replace strings in Python在 Python 中替换字符串
【发布时间】:2014-07-08 08:00:27
【问题描述】:

我有一个字符串:

string = '17 121221 17 17939 234343 17 39393'

我如何确保在使用 string.replace('17', 'sth') 时只替换 17s(而不是 17,它是 17939 的一部分)?

我想要一个输出字符串,如:

string = 'sth 121221 sth 17939 234343 sth 39393'

干杯, 凯特

【问题讨论】:

  • @RajeshKumar,这失败了 123 345 12317 1234 因为它还替换了 12317 中的 17 OP 不想要的
  • @sshashank124 如果我执行 string.replace('17', 'sth'),它实际上可以工作!
  • 但是如果 17 位于字符串的开头和结尾,那将会失败

标签: python string replace str-replace


【解决方案1】:

您可以使用regex

import re

string = '17 121221 17 17939 234343 17 39393'

>>> print re.sub(r'(\D|^)17(\D|$)', r'\1sth\2', string)
sth 121221 sth 17939 234343 sth 39393

【讨论】:

  • 当字符串中有数字“-17”时,这将失败,在其他一些情况下也是如此。
【解决方案2】:

更容易使用和防故障:

>>> string = '17 121221 17 17939 234343 17 39393'
>>> ' '.join( 'sth' if i == '17' else i for i in string.split() )
'sth 121221 sth 17939 234343 sth 39393'

当一个简单的split/join 就足够时,你不应该使用正则表达式。

【讨论】:

    猜你喜欢
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    相关资源
    最近更新 更多