【问题标题】:Need help replacing prefix of words in python [duplicate]需要帮助替换python中的单词前缀[重复]
【发布时间】:2018-12-13 09:05:19
【问题描述】:

我怎样才能让我们说:函数(word,n,prefix),其中“word”的前“n”个单词将被“prefix”替换?我不想使用 Python 的替换方法。 谢谢

【问题讨论】:

  • 用前缀替换单词真的意味着在单词前面加上前缀字符串吗?

标签: python python-3.x


【解决方案1】:

简单

def function(word, n, prefix):
    return prefix + word[n:]

注意字符串是不可变的,所以你实际上是在创建一个新字符串。


只是为了好玩,您还可以使用bytearray 对象,它是可变的

def function(word, n, prefix):
    word[:n] = [ord(i) for i in prefix]
    return word

>>> word = bytearray("12345", 'utf-8')
>>> function(word, 3, "abc")
bytearray(b'abc45')
>>> function(word, 3, "abc").decode('utf-8')
'abc45'

【讨论】:

  • 如果wordprefix 包含任何非ASCII 字符,第二个版本将会非常混乱。特别是因为在后一种情况下你会得到一个关于ValueError: byte must be in range(0, 256)的错误,而在前一种情况下你可能会得到mojibake或者你可能会在远离问题发生的地方得到UnicodeDecodeError,而且这些都不是非常可调试的.
  • 对了,为什么不直接word[:n] = prefix.encode()
  • @abarnert 太棒了,总是渴望学习新事物 :) ! Idk,我觉得展示你如何不能操作字符串但 can 字节数组是很有趣的。但实际上这不是要放入脚本中的代码,它“只是为了好玩”哈哈。关于.encode() 的想法是对它背后的字节给出一些直觉。只是encode() 可能看起来像一个黑匣子
猜你喜欢
  • 1970-01-01
  • 2014-03-08
  • 2014-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 2016-01-29
  • 2015-07-13
相关资源
最近更新 更多