分享
三行代码  ›  专栏  ›  技术社区  ›  Hojung Kim

如何在Python中从给定字符串中移除子字符串列表?

  •  0
  • Hojung Kim  · 技术社区  · 6 月前

    所以我得到了这个字符串,我正在遍历要删除的子字符串列表。在Ruby中,字符串是可变的,我只需要不断地更改原始字符串就可以了。但是,由于字符串在Python中是不可变的,所以我遇到了一些问题。

    如果这是我的字符串,并且我正在尝试删除以下列表中的子字符串(次):

    string = "Play soccer tomorrow from 2pm to 3pm @homies"
    times = ['tomorrow', 'from 2pm to 3pm']
    

    如何将此字符串作为所需的返回?

    removed_times = "Play soccer @homies"

    3 回复  |  直到 6 月前
        1
  •  4
  •   RoadRunner    6 月前

    你可以用 str.replace() 将子字符串替换为 "" " " 替换后单词之间只有一个空格。你可以用 str.split() str.join() 为了这个。

    string = "Play soccer tomorrow from 2pm to 3pm @homies"
    
    times = ["tomorrow", "from 2pm to 3pm"]
    
    for time in times:
        string = string.replace(time, "")
    
    print(" ".join(string.split()))
    # Play soccer @homies
    

    字符串在python中是不可变的,因此不能简单地使用 string.replace(time, "") . 你需要重新分配字符串 string = string.replace(time, "") .

        2
  •  2
  •   Oliver.R    6 月前

    你可以 split 子字符串上的字符串,然后 join 它又回到了一起:

    string = "Play soccer tomorrow from 2pm to 3pm @homies"
    times = ['tomorrow', 'from 2pm to 3pm']
    for t in times:
        string = ''.join(string.split(t))
    

    'Play soccer @homies' 因为在你的时代空间不会被捕捉和移除。

        3
  •  0
  •   Kiran Indukuri    6 月前
    string = "Play soccer tomorrow from 2pm to 3pm @homies"
    times = ['tomorrow', 'from 2pm to 3pm']
    removed_times = string
    for x in times:
        removed_times = removed_times.replace(' ' + x + ' ', ' ')
    print(removed_times)
    #Play soccer @homies