>> >>> sentence="I like pyt-6ren">
gpt4 book ai didi

python - 有人可以解释为什么替换对我不起作用

转载 作者:行者123 更新时间:2023-11-28 21:58:47 25 4
gpt4 key购买 nike

我需要删除句子中多余的空格。句子是"I  like   python"我需要制作 "I like python" .所以我用这样的替换:

>>>
>>> sentence="I like python"
>>> def checkio(element):
newelement=element.replace(" ", " ") and element.replace(" ", " ")
return newelement

>>> checkio(sentence)
'I like python'
>>>

你看,结果是"I  like python"即使我(认为)我告诉它替换 "  "" " .有人可以为我解决为什么这不起作用吗?

最佳答案

这可能是您想要做的:

def checkio(element):
newelement = element.replace(" ", " ").replace(" ", " ")
return newelement

你甚至可以将其缩短为

def checkio(element):
return element.replace(" ", " ").replace(" ", " ")

但是,如果您想替换任意数量的空格怎么办?最好在任意数量的空格上拆分句子,然后用一个空格将其重新连接在一起。为此,您将使用

def checkio(element):
return " ".join(element.split())

split 方法接受一个字符串并将其分成一个列表。没有参数,它以空格分隔:

>>> "I    like  python".split()
["I", "like", "python"]

join 方法接受一个列表并使用列表元素之间的字符串从中生成一个字符串:

>>> ' '.join(["I", "like", "python"])
"I like python"
>>> '__HELP__'.join(["I", "like", "python"])
"I__HELP__like__HELP__python"

为什么您最初的尝试失败了

线

newelement = element.replace("  ", " ") and element.replace("   ", " ")

没有按照您的预期进行,因为它使用了字符串的“真实性”。 and 运算符着眼于逻辑事物。在 python 中,除 "" 之外的所有字符串都被视为 True。您可以使用它来做一些叫做“短路”的事情,这就是您所做的。

当您使用 and 时,左语句和右语句都必须为真才能计算为 True。如果左边的部分为 False,则没有理由继续到右边的部分并且评估停止在那里(又名“短路”)。如果为真,则需要检查右侧以查看整个语句是否为真。您可以利用这一事实,如果左边的语句为假,则返回左边的语句;如果左边的语句为真,则返回右边的语句:

>>> a = "a" and "b"
>>> a
"b"
>>> a = "" and "b"
>>> a
""
>>> # It works oppositely with "or"
>>> a = "a" or "b"
>>> a
"a"
>>> a = "" or "b"
>>> a
"b"

element.replace("", "") 返回一个字符串,element.replace("", "") 也是如此。由于字符串的计算结果为 True,因此您实际上只会返回 and 的正确语句。

这不是 python 中逻辑运算符的常见用法(不过在其他语言中更常用)

关于python - 有人可以解释为什么替换对我不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17583841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com