gpt4 book ai didi

python - 如何用 0 替换空字符串,但如果不为空则保留它

转载 作者:太空狗 更新时间:2023-10-30 00:27:15 24 4
gpt4 key购买 nike

在下面显示的情况下替换值时,Python 的行为似乎不一致(使用 python 3.6.5)

    >>> emptyString = '    '
>>> emptyString.strip().replace('','0') #produces expected results
'0'
>>> notEmptyString = ' 50 '
>>> notEmptyString.strip().replace('','0') #expected '50'
'05000'
>>> shortString = notEmptyString.strip()
>>> shortString #results as expected
'50'
>>> shortString.replace('','0') #unexpected results - expected '50'
'05000'

这是我想看到的:

  • if string has a value, just strip() the leading and trailing spaces.
  • if string is empty (i.e. "") or string is just blank characters (i.e. " ") then strip it to be "" and replace "" with '0'

Example #1... string = " 10 ".... then just strip leading and trailing spaces
Example #2... string = ' ' .... then convert to '0'

我可以通过其他方式得到我想要的结果,但我想知道是否有人理解为什么python会产生这些结果。

最佳答案

如果s是一个字符串,那么:

s.replace(old, new)

返回 s 的副本,每次出现的字符串 old 都替换为 new,例如:

In [7]: "abracadabra".replace("a","4")
Out[7]: '4br4c4d4br4'

作为一种特殊情况,如果old 是空字符串,它会在字符串的开头和结尾以及每对字符之间插入new:

In [8]: "12345678".replace("","_")
Out[8]: '_1_2_3_4_5_6_7_8_'

基本原理是第一个字符之前、每对字符之间和最后一个字符之后都有一个“空字符串”,这就是要被替换的内容。

所以,replace 并没有按照您的想法进行。

要做什么,您可以使用已经提出的解决方案之一,或者如果您觉得自己聪明的话,可以使用类似的解决方案:

s.strip() or "0"

关于python - 如何用 0 替换空字符串,但如果不为空则保留它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51815532/

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