繁体   English   中英

列表字符串或元组字符串

[英]String of list or strings to a tuple

我有一个class属性,它可以是一个字符串或字符串列表。 我想将其转换为元组,以便列表可以正常转换,但是单个字符串变为单项元组:

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

str --> (str, )

不幸的是, tuple('sting')返回的不是我期望的('s', 't', 'r', 'i', 'n', 'g') 不进行类型检查就可以吗?

类型检查将是实现此目标的好方法。 否则,您如何确定输入是列表还是字符串?

您可以创建一个函数来测试输入是列表还是字符串,并适当地返回并按您认为合适的方式处理其余部分。 遵循以下原则

>>> 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')

您也只能检查字符串,(假设Python 2.x,在Py3中用str替换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)

你可以这样做:

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

处理字符串以实现您要尝试的内容时,无需调用tuple()

如果您需要一种方法来同时帮助这两种类型,则无法避免类型检查:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM