如何向Python array数组中追加不同长度的字符串?
问题原因与解决方法
问题原因
你使用的array("u")是Unicode字符数组,它要求每个元素必须是单个Unicode字符。而"cd"是长度为2的字符串,不符合该数组的类型约束,所以插入失败。
解决方案
根据你的实际需求,有两种处理方式:
1. 将多字符字符串拆分为单个字符存入数组
如果需要把字符串的每个字符单独作为数组元素,直接利用array的初始化特性(支持传入可迭代的字符序列),或者逐个插入字符:
from array import array def function(a): # 直接用字符串初始化Unicode字符数组,自动拆分每个字符 our_array = array("u", a) print(our_array) # 测试 function("a") # 输出: array('u', 'a') function("cd") # 输出: array('u', 'cd')
如果需要插入到指定位置(比如索引0),可以遍历字符串逐个插入:
from array import array def function(a): our_array = array("u", []) # 遍历字符串,逐个插入到数组开头(注意顺序会反转) for char in a: our_array.insert(0, char) print(our_array) function("cd") # 输出: array('u', 'dc') # 若要保持原字符串顺序,改用extend方法 def function(a): our_array = array("u", []) our_array.extend(a) print(our_array) function("cd") # 输出: array('u', 'cd')
2. 存储完整的字符串作为数组元素
如果需要把整个字符串作为一个元素存储,array的"u"类型不适用,推荐直接使用Python原生列表:
def function(a): our_list = [] our_list.insert(0, a) print(our_list) function("cd") # 输出: ['cd']
如果必须使用array模块,可以将字符串编码为字节后存入字节数组:
from array import array def function(a): # 将字符串编码为UTF-8字节,存入字节数组 our_array = array("b", a.encode("utf-8")) print(our_array) # 取出时解码为原字符串 print(our_array.tobytes().decode("utf-8")) function("cd") # 输出: # array('b', [99, 100]) # cd
内容的提问来源于stack exchange,提问作者Hollstream
相关产品推荐
相关产品推荐

