【发布时间】:2018-12-13 09:05:19
【问题描述】:
我怎样才能让我们说:函数(word,n,prefix),其中“word”的前“n”个单词将被“prefix”替换?我不想使用 Python 的替换方法。 谢谢
【问题讨论】:
-
用前缀替换单词真的意味着在单词前面加上前缀字符串吗?
标签: python python-3.x
我怎样才能让我们说:函数(word,n,prefix),其中“word”的前“n”个单词将被“prefix”替换?我不想使用 Python 的替换方法。 谢谢
【问题讨论】:
标签: python python-3.x
简单
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'
【讨论】:
word 或prefix 包含任何非ASCII 字符,第二个版本将会非常混乱。特别是因为在后一种情况下你会得到一个关于ValueError: byte must be in range(0, 256)的错误,而在前一种情况下你可能会得到mojibake或者你可能会在远离问题发生的地方得到UnicodeDecodeError,而且这些都不是非常可调试的.
word[:n] = prefix.encode()?
.encode() 的想法是对它背后的字节给出一些直觉。只是encode() 可能看起来像一个黑匣子