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

在Python中,如何从给定字符串中删除子字符串列表?,python,python-3.x,string,substring,Python,Python 3.x,String,Substring,我有这个字符串,我在一个要删除的子字符串列表上迭代。在Ruby中,字符串是可变的,我只需要在原地更改原始字符串即可。但我在解决这个问题时遇到了一些问题,因为字符串在Python中是不可变的 如果这是我的字符串,并且我正在尝试删除以下列表中的子字符串: string = "Play soccer tomorrow from 2pm to 3pm @homies" times = ['tomorrow', 'from 2pm to 3pm'] 如何获取此字符串作为所需的返回 删除\u次=踢足球@h

我有这个字符串,我在一个要删除的子字符串列表上迭代。在Ruby中,字符串是可变的,我只需要在原地更改原始字符串即可。但我在解决这个问题时遇到了一些问题,因为字符串在Python中是不可变的

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

string = "Play soccer tomorrow from 2pm to 3pm @homies"
times = ['tomorrow', 'from 2pm to 3pm']
如何获取此字符串作为所需的返回

删除\u次=踢足球@homies

编辑:与多个子字符串的建议问题b/c不同,您可以使用将子字符串替换为。这也意味着最终结果将需要拆分并由连接,以便在替换后单词之间只有一个空格。您可以为此使用和

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.replacetime对其进行就地修改。您需要重新分配string=string.replacetime的字符串

您可以拆分子字符串上的字符串,然后将其重新连接在一起:

string=明天下午2点到3点踢足球@homies 时间=[‘明天’,‘从下午2点到下午3点’] 对于t,时间为: 字符串=.joinstring.splitt
请注意,这将返回字符串“Play soccer@homies”,因为在您的时间段中不会捕获和删除空格。

如果要从字符串cbabc中删除子字符串a和bb,预期的行为是什么?删除a后,两个B将相邻,但可能您不想删除它们,因为bb不是原始字符串的子字符串。啊,在这个示例中,我使用sutime Stanford的NLP日期/时间解析库获取JSON,该库返回与日期/时间信息相对应的部分文本。因此子字符串将始终包含在文本中。这是否回答了您的问题?为什么拆分/加入?已经有了一个.replace方法。显然,我没有考虑所有选项-根据RoadRunners的回答,replace肯定是一个更好的选择,但当我开始键入我的时,它还没有出现。当要删除的子字符串位于输入字符串的开始或结尾时,这将不起作用;在这种情况下,两边都没有空格。这是一个很好的观点,连接和拆分是正确的解决方案。
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