Python .strip方法不起作用

Lan*_*man 2 python

我有一个像这样开始的函数:

def solve_eq(string1):
    string1.strip(' ')
    return string1
Run Code Online (Sandbox Code Playgroud)

我正在输入字符串'1 + 2*3**4',但return语句根本没有剥离空格,我无法弄清楚原因.我甚至尝试过.replace()没有运气.

Eug*_*ene 12

Strip不会删除任何地方的空白,只会在开头和结尾删除.试试这个:

def solve_eq(string1):
    return string1.replace(' ','')
Run Code Online (Sandbox Code Playgroud)

strip()在这种情况下使用是多余的(显然,感谢评论员!).

在我休息之前,Ps Bonus有用的片段(感谢OP!):

import re
a_string = re.sub(' +', ' ', a_string).strip()
Run Code Online (Sandbox Code Playgroud)

  • 我是反对者之一。不要认为这是针对你个人的,而且绝对不要放弃这样的事情。我否决这个答案的原因是OP对字符串和相关方法的工作原理有一个非常根本的误解。主要问题不是使用“.strip()”的返回值,而是认为该方法会改变输入字符串。诸如此类的问题如雨后春笋般冒出来,本质上都是打字错误问题(不是真正的打字错误,而是脑放屁)。回答此类问题将停止自动删除过程,以便在问题关闭后启动。你在浪费时间回答他们。 (3认同)
  • +1为什么这里要投票?这是对OP问题的有效答案。尽管在这种情况下您不需要`.strip()`。 (2认同)
  • 不是downvoter,但我有一种感觉downvoting 背后的动机可能是这里的一些人认为这不应该被回答。至少从我的经验来看,这似乎是整体情况的模式。 (2认同)
  • 我是一个机器人,我从不把事情看成是针对个人的……是的,“我什至尝试过`.replace()`”有点泄露了它。但在评论中投反对票而不是要求删除呢?我只是为了要点;)不过你是完全正确的,问题需要过滤,或者至少立即根据要点或其他东西进行标记。我回答的大部分问题都是使用 SO 来回答的!也许 SO 应该为菜鸟提供一个 JFGI 标志?哈!不管怎样,谢谢你的解释,谢谢。 (2认同)

Mar*_*vak 5

由于字符串是不可变的,因此Strip不会更改原始字符串。您应该为剥离后的字符串设置返回值,或者仅返回剥离后的字符串。

选项1

def solve_eq(string1):
    string1 = string1.replace(' ', '')
    return string1
Run Code Online (Sandbox Code Playgroud)

选项2

def solve_eq(string1):
    return string1.replace(' ', '')
Run Code Online (Sandbox Code Playgroud)

编辑:代替string1.strip(' '),使用string1.replace(' ', '')