【问题标题】:How to replace a string with a backspace?如何用退格替换字符串?
【发布时间】:2021-05-26 01:05:20
【问题描述】:

str.replace() 允许将字符串中的子字符串替换为其他内容。

替换后出现重复空格的问题:

>>> 'word word to be removed word'.replace('to be removed', '')
'word word  word'

注意第二个word 后面的两个空格。

有没有办法用退格符替换子字符串来删除一个空格? (我知道字符串将由空格分隔的单词组成)

【问题讨论】:

  • 好吧,用你自己的话来说,为什么会出现两个空格?你能想出一个可以从原始文本中删除的子字符串,以获得你想要的结果吗?
  • 或者删除multiple spaces
  • 在“remove”之后添加一个空格 - .....replace('to be removed ', '')。你可以摆脱这个问题。
  • \w* 也是你的朋友,所以 spoiler 改用 r'\w*to be removed\w*'
  • @KarlKnechtel:好吧,我不能——这就是我问这个问题的原因:) \b 没用

标签: python python-3.x string replace str-replace


【解决方案1】:

一种解决方案是split(),然后join() 结果。这也删除了前后空白

>>> ' '.join('word word to be removed word'.replace('to be removed', '').split())
'word word word'

【讨论】:

    【解决方案2】:

    您可以在要删除的子字符串的末尾添加这个空格:

    phrase = 'word word to be removed word'
    
    # We add the whitespace at the end
    to_remove = 'to be removed ' # instead of 'to be removed'
    
    # Remove a specific substring
    phrase = phrase.replace(to_remove, '')
    

    如果您有连续的空格并且只想用一个替换它们,您可以使用正则表达式:

    import re
    
    # Replace all consecutive whitespaces by one whitespace
    phrase = re.sub(r" +", " ", phrase)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      • 2020-12-19
      • 1970-01-01
      • 2021-11-23
      • 2021-05-11
      相关资源
      最近更新 更多