一个或多个字符串的字符串

2024-09-28 23:27:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个class属性,它可以是字符串,也可以是字符串列表。我想把它转换成一个元组,这样列表就可以正常转换,但是一个字符串就变成了一个单项元组:

[str, str] --> (str, str)

str --> (str, )

不幸的是tuple('sting')返回('s', 't', 'r', 'i', 'n', 'g'),这不是我所期望的。有没有可能不检查型号就可以做?你知道吗


Tags: 字符串列表属性class元组型号strtuple
2条回答

您可以这样做:

>>> s = 'str'
>>> print (s,)
('str',)

在处理字符串时,不需要调用^{}来实现您正在尝试的功能。你知道吗

如果您需要一个方法来帮助这两种类型,那么就不能避免类型检查:

def tuplising(typ):
    return tuple(typ) if isinstance(typ, list) else (typ,)

类型检查将是一个很好的方法来实现这一点。否则,如何确定输入是列表还是字符串?。你知道吗

您可以创建一个函数来测试输入是一个列表还是一个字符串,并适当地返回和处理其余的内容。类似于

>>> def convert_to_tuple(elem):
        if isinstance(elem, list):
            return tuple(elem)
        elif isinstance(elem, basestring):
            return (elem,)
        else:
            # Do Something
            pass


>>> convert_to_tuple('abc')
('abc',)
>>> convert_to_tuple(['abc', 'def'])
('abc', 'def')

您也只能检查字符串(假设python2.x,将Py3中的basestring替换为str

>>> def convert_to_tuple(elem):
        if isinstance(elem, basestring):
            return (elem,)
        else:
            return tuple(elem)


>>> convert_to_tuple('abc')
('abc',)
>>> convert_to_tuple(('abc', 'def'))
('abc', 'def')
>>> convert_to_tuple(['abc', 'def'])
('abc', 'def')

也可以将函数转换为一个线性函数。你知道吗

>>> def convert_to_tuple(elem):
        return (elem,) if isinstance(elem, basestring) else tuple(elem)

相关问题 更多 >