簡體   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