[英]Python: Replace character RANGE in a string with new string
给定以下字符串:
mystring = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
目标是与其他角色交换角色位置范围。
例如,用ABCDE
换出字符20-24。 结果如下所示:
XXXXXXXXXXXXXXXXXXXABCDEXXXXXXXXXXXXXXX
测试:
mystring = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
mystring[20:24] = 'ABCDE'
我收到错误消息: TypeError: 'str' object does not support item assignment
最终目标是可重用的功能,例如:
def replace_chars(some_string, start_char, end_char, replace_string):
if len(replace_string) == (end_char_pos - start_char_pos + 1):
some_string[start_char:end_char] = replace_string
else:
print "replace string invalid length"
sys.exit(1)
return mystring
new_string = replace_chars('XYZXYZ', 2, 4, 'AAA')
我意识到可以将未更改的范围填充到新字符串中:
mystring = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
mystring = mystring[0:19] + 'ABCDE' + mystring[25:38]
但是,这将迫使进行更多的计算,因为这将针对文件中的行发生数千次。 不同的行将具有不同的长度,并且将在不同的字符位置进行交换。 这样做似乎是一个漫长的解决方法,我应该能够直接将其直接插入字符位置。
感谢任何帮助,谢谢!
字符串是不可变的(不可更改)。 但是您可以索引和加入项目。
mystring = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
mystring = 'ABCDE'.join([mystring[:20],mystring[24:]])
'XXXXXXXXXXXXXXXXXXXXABCDEXXXXXXXXXXXXXXXXX'
请小心,因为字符串长度“ ABCDE”以及mystring [:20]和mystring [24:]之间省略的项目数必须相同。
字符串在python中是不可变的! 您必须将字符串分成三部分并将它们连接在一起:)
mystring = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
new_str = "ABCDE"
first_piece = mystring[0:20]
third_piece = mystring[24:len(mystring)]
final_string = first_piece + new_str + third_piece
尽管您认为应该可以分配给字符串的各个字符,但'str' object does not support item assignment
,但您不能这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.