0

如何删除字符串的一部分,例如

Blue = 'Blue '
Yellow = 'Yellow'
Words = Blue + Yellow
if Blue in Words:
    Words = Words - Yellow

这就是我认为的样子?

编辑:我知道它不会起作用我想知道什么会起作用。因为你不能在 str() 中使用 '-'

4

3 回答 3

6

您可以使用str.replace空字符串交换文本:

Words = Words.replace(Yellow,'')

请注意,这将转换:

"The Yellow Herring"

简单地说:

"The Herring"

(替换将发生在字符串中的任何位置)。如果您只想'Yellow'从字符串的末尾删除,您可以使用.endswith和切片:

if Blue in Words and Words.endswith(Yellow):
    Words = Words[:-len(Yellow)]
于 2013-03-13T01:44:17.213 回答
3

从不同的角度来看,您实际上不能删除字符串的一部分,因为字符串(在 Python 中)是不可变的——它们不能被修改(有充分的理由)。这意味着没有分配 ( mystring[0] = 'f')。

可以做的是构建一个全新的字符串,并删除它的特定部分。这实现了相同的目标。

这实际上非常重要,因为它意味着

mystring.replace('m', 'f')

就其本身而言,什么都不做(请注意,没有赋值 - 这只是构建一个新字符串,然后将其丢弃)。学习这个不变性(和可变性)的概念对于学习是必不可少的——它将帮助您避免许多错误。

于 2013-03-13T01:48:56.303 回答
1

使用替换功能

if Blue in Words:
    Words = Words.replace(Yellow, '')

如果 Words 是一个列表,则可以执行以下操作:

if Blue in Words:
   Words = [word for word in Words if word != Yellow]

或相同但使用删除:

if Blue in Words:
   Words.remove(Yellow)
于 2013-03-13T01:44:58.890 回答