【问题标题】:String replace doesn't appear to be working字符串替换似乎不起作用
【发布时间】:2015-01-12 15:03:33
【问题描述】:

我最初尝试使用= 运算符来赋值,但它返回了错误, 然后我尝试使用 string.replace():

encrypted_str.replace(encrypted_str[j], dec_str2[k], 2)

encrypted_str.replace(encrypted_str[j], unichr(ord(dec_str2[k]) - 32), 2)

但它正在返回原始值。

帮助了解如何正确使用替换 API 以提供正确的结果 还有其他 API 可以用来代替 unichr()

encrypted_str 正在被encrypted_str = raw_input() 从用户那里取走 dec_str2 是用户输入的频率字符串。 这个问题几乎不涉及变量 我想知道我是否错误地使用了replcae() API,因为它为encrypted_str 提供了不变的输出 我们可以使用encrypted_str[j] 从字符串中返回一个字符 来定义replace() API 的子字符串。 我用encrypted_str.replace(encrypted_str[j], unichr(ord(dec_str2[k]) - 32), 1) ma​​x replace 1 而不是 2(因为我只需要一个替换)。

我需要做的实际操作将在 C 中如下: encrypted_str[j] = dec_str2[k] -32

由于我是 python 新手,我正在尝试寻找替代品。

【问题讨论】:

  • 您认为我们如何在不了解 encrypted_strdec_str2 的情况下为您提供帮助,实际上您的代码背后的逻辑是什么?
  • 我认为这并不重要,但逻辑是使用解密的频率字符串来解密 Ceaser Cipher
  • 请将您的描述添加到问题中,以及您的数据或其中的一部分!

标签: python string replace


【解决方案1】:

Python 中的字符串是不可变的。这意味着给定的字符串对象在创建后将永远不会更改其值。这就是为什么像some_str[4] = "x" 这样的元素赋值会引发异常。

出于类似的原因,str 类提供的任何方法都不能改变字符串。所以,str.replace 方法并没有像我认为的那样工作。它不是在原地修改字符串,而是返回一个带有请求替换的新字符串。

试试:

encrypted_str = encrypted_str.replace(encrypted_str[j], dec_str2[k], 2)

如果您要进行许多此类替换,将您的字符串转换为字符列表,逐个进行修改,然后使用str.join 将列表再次转换回字符串可能是有意义的完成后。

【讨论】:

  • 我每次都忘了这个,有什么方法可以收藏吗?
【解决方案2】:

Python 字符串是不可变的。这意味着字符串不能被您的帖子中描述的方法调用修改。您必须使用赋值才能使用方法调用返回的字符串。

例如:

encrypted_str = encrypted_str.replace(encrypted_str[j], dec_str2[k], 2)

现在encrypted_str 包含新值。

【讨论】:

    【解决方案3】:

    我认为你必须先剥离这条线。

    line = line.rstrip()
    print(line.replace('', ''))
    

    【讨论】:

    • 问题不在于这个。你想对第二行说什么?
    • 第二行什么都不做,因为它什么都不做。
    【解决方案4】:

    你应该给它命名,

    str1 = "abc.."
    print str1.replace("..","")
    'abc'
    print str1
    'abc..'
    str1 = str1.replace("..","")
    print str1
    'abc'
    

    迭代:

        str = ['a','..']
        for i in str:
            str1= str1.replace(i, '')
        print(str1)
        #'bc'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多