Python全局字符串传递与拼接问题求助
问题解决思路
核心问题定位
你看到的object.Class object at address输出,说明mdstring、rxstring等变量并不是字符串类型,而是某个自定义类的实例对象。你提到赋值函数返回字符串,但实际可能函数返回的是包含字符串属性的对象,而非直接返回字符串。
分步排查与解决
验证变量实际类型
在调用ordered_addr_string前,先打印每个变量的类型和内容,确认真实情况:print("mdstring类型:", type(mdstring), "值:", mdstring) print("rxstring类型:", type(rxstring), "值:", rxstring) # 同理打印dnstring、vsstring如果输出类型不是
<class 'str'>,就说明变量是对象,不是字符串。检查赋值函数的返回值
找到给这些变量赋值的函数,查看它的返回逻辑。比如函数可能是这样的:def get_vsstring(): # 错误示例:返回自定义对象而非字符串 class VisionString: def __init__(self, value): self.value = value return VisionString("1|Vision|~Included with Medical.")这种情况下,
vsstring是VisionString的实例,不是字符串,打印时就会显示对象地址。正确获取字符串值
如果变量是对象,需要提取它的字符串属性。假设对象用value属性存储字符串,修改调用代码:ordered_back_addreses = { "5117": ordered_addr_string(mdstring.value, rxstring.value, dnstring.value, vsstring.value), }或者如果对象实现了
__str__方法但str()没生效,尝试直接调用str():ordered_back_addreses = { "5117": ordered_addr_string(str(mdstring), str(rxstring), str(dnstring), str(vsstring)), }修正
ordered_addr_string函数
函数里的global声明完全多余(参数已经传入变量值),同时补全拼接逻辑:def ordered_addr_string(*addresses): ordered_addresses = [] for address in addresses: # 确保处理的是字符串,同时过滤空值 addr_str = str(address).strip() if addr_str: ordered_addresses.append(addr_str) return "^".join(ordered_addresses)用列表收集非空字符串再
join,比循环拼接更高效简洁。
内容的提问来源于stack exchange,提问作者J Web
相关产品推荐
相关产品推荐

